home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / x / volume11 / tgif / patch7 < prev    next >
Encoding:
Internet Message Format  |  1991-02-12  |  203.0 KB

  1. Path: uunet!cs.utexas.edu!sun-barr!newstop!exodus!CS.UCLA.EDU
  2. From: william@CS.UCLA.EDU (William Cheng)
  3. Newsgroups: comp.sources.x
  4. Subject: v11i069: tgif, Patch7, Part01/01
  5. Message-ID: <7939@exodus.Eng.Sun.COM>
  6. Date: 13 Feb 91 07:40:50 GMT
  7. References: <csx-11i069:tgif@uunet.UU.NET>
  8. Sender: news@exodus.Eng.Sun.COM
  9. Lines: 6519
  10. Approved: argv@sun.com
  11.  
  12. Submitted-by: william@CS.UCLA.EDU (William Cheng)
  13. Posting-number: Volume 11, Issue 69
  14. Archive-name: tgif/patch7
  15. Submitted-by: William Cheng <william@cs.ucla.edu>
  16. Patch-To: tgif: Volume 7, Issue 56-76 (original: tgif-1.2)
  17. Patch-To: tgif: Volume 8, Issue 46-48 (Patch1: tgif-1.2 => tgif-1.9)
  18. Patch-To: tgif: Volume 8, Issue 58-60 (Patch2: tgif-1.9 => tgif-1.12)
  19. Patch-To: tgif: Volume 8, Issue 87-89 (Patch3: tgif-1.12 => tgif-1.13)
  20. Patch-To: tgif: Volume 8, Issue 94 (Patch4: tgif-1.13 => tgif-1.14)
  21. Patch-To: tgif: Volume 8, Issue 95 (Patch5: tgif-1.14 => tgif-1.15)
  22. Patch-To: tgif: Volume 10, Issue 64-66 (Patch6: tgif-1.15 => tgif-1.16)
  23.  
  24. [moderator's note: WARNING! I just posted 6 parts of the patch #6
  25.     a few moments ago and yet I have just seen that a patch #6 already
  26.     existed!  I have no idea what I was doing with a *second* patch
  27.     #6, and I don't know if it's wrong (the author will undoubtedly
  28.     contact me :-), but I also don't know if it's right.  Anyway,
  29.     this is patch #7 so I wouldn't apply either patch #6 or #7 till
  30.     further notice -- something's going to fail.  I will post a
  31.     followup soon informing you to either patch your sources with
  32.     that extra patch #6, or to dump them.  Either way, hold on to
  33.     this anyway --you'll need it after we get the patch #6 thing
  34.     straightend out.  Sorry for the confusion.  --dan ]
  35.  
  36. Patch7 of tgif takes tgif-1.16 to tgif-1.19.  Below is a list of
  37. added features/bug fixes, followed by the actual patch.
  38.  
  39. tgif-1.16 => tgif-1.17
  40.  
  41. 1) Fix bugs to use getwd() to get current working directory.  Thanks to
  42.    Peter Mutsaers (muts@fysaj.fys.ruu.nl) for pointing it out.
  43. 2) Add color attributes in color PostScript files.  (Default for
  44.    printing is still non-color.  Type ^#K to switch to color
  45.    PostScript output.)
  46. 3) Add dash patterns and change tgif file version to 9.
  47. 4) Add 4 more buttons in the panel (choice window).  Now all secondary
  48.    pop-up menus can be poped-up from the panel (except for the edit menu).
  49. 5) Add the ``UpdateSymbols()'' feature.  Selected icons can be
  50.    ``brought up-to-date'' with the current representations found
  51.    in the symbol path.  Each new icon is placed so that it is lined
  52.    up at the upper-left corner with the old icon.  This feature is
  53.    accessible by typing ^#U.
  54. 6) If one of the font can not be found, a font with a different
  55.    dots-per-inch is automatically chosen.  If both can not be found,
  56.    tgif exits.  (Apparently some machines only support 100dpi fonts
  57.    by default.)
  58.  
  59. tgif-1.17 => tgif-1.18
  60.  
  61. 1) Fix rotated text.  On some servers it doesn't work.  (Should use
  62.    ZPixmap instead of XYPixmap when calling XGetImage ().)
  63. 2) There was this problem that after a new symbol file is saved and
  64.    one tries to save it again (with ^s), tgif thinks the file name
  65.    is /symbolfilename.  This bug is fixed.
  66. 3) If fonts of certain dots-per-inch can not be found and an
  67.    alternative fonts with different dots-per-inch can be found,
  68.    the file status should be set to 'MODIFIED'.
  69. 4) If the symbol path contains a ".", then whenever a directory is
  70.    changed, the symbol name cache should be updated.
  71.  
  72. tgif-1.18 => tgif-1.19
  73.  
  74. 1) Fix a bug in names.c which cause segmentation faults on some machines.
  75. 2) If certain color can not be found, skip it, don't leave it blank.
  76. 3) Add explanations in tgif.man about how the alignments work.
  77.  
  78. The following is the patch to take tgif from version 1.16 to 1.19.
  79. ---------------------------------> cut here <---------------------------------
  80. *** box.c.orig    Mon Jan  7 13:00:50 1991
  81. --- box.c    Mon Jan  7 13:00:52 1991
  82. ***************
  83. *** 6,10 ****
  84.   #ifndef lint
  85.   static char RCSid[] =
  86. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/box.c,v 1.8 90/10/27 15:09:43 william Exp $";
  87.   #endif
  88.   
  89. --- 6,10 ----
  90.   #ifndef lint
  91.   static char RCSid[] =
  92. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/box.c,v 1.11 90/11/10 13:50:41 william Exp $";
  93.   #endif
  94.   
  95. ***************
  96. *** 70,75 ****
  97.      struct ObjRec    * ObjPtr;
  98.   {
  99. !    register int    ltx, lty, rbx, rby;
  100. !    int        fill, width, pen;
  101.   
  102.      ltx = ObjPtr->obbox.ltx;
  103. --- 70,75 ----
  104.      struct ObjRec    * ObjPtr;
  105.   {
  106. !    register int    ltx, lty, rbx, rby, i;
  107. !    int        fill, width, pen, dash, color_index;
  108.   
  109.      ltx = ObjPtr->obbox.ltx;
  110. ***************
  111. *** 81,87 ****
  112. --- 81,97 ----
  113.      pen = ObjPtr->detail.b->pen;
  114.      width = ObjPtr->detail.b->width;
  115. +    dash = ObjPtr->detail.b->dash;
  116.   
  117.      if (fill == NONEPAT && pen == NONEPAT) return;
  118.   
  119. +    if (colorDump)
  120. +    {
  121. +       color_index = ObjPtr->color;
  122. +       fprintf (FP, "%.3f %.3f %.3f setrgbcolor\n",
  123. +             ((float)tgifColors[color_index].red/maxRGB),
  124. +             ((float)tgifColors[color_index].green/maxRGB),
  125. +             ((float)tgifColors[color_index].blue/maxRGB));
  126. +    }
  127.      switch (fill)
  128.      {
  129. ***************
  130. *** 117,120 ****
  131. --- 127,138 ----
  132.   
  133.      fprintf (FP, "%1d setlinewidth\n", widthOfLine[width]);
  134. +    if (dash != 0)
  135. +    {
  136. +       fprintf (FP, "[");
  137. +       for (i = 0; i < dashListLength[dash]-1; i++)
  138. +          fprintf (FP, "%1d ", (int)(dashList[dash][i]));
  139. +       fprintf (FP, "%1d] 0 setdash\n",
  140. +             (int)(dashList[dash][dashListLength[dash]-1]));
  141. +    }
  142.   
  143.      switch (pen)
  144. ***************
  145. *** 149,152 ****
  146. --- 167,171 ----
  147.            break;
  148.      }
  149. +    if (dash != 0) fprintf (FP, "[] 0 setdash\n");
  150.      fprintf (FP, "1 setlinewidth\n\n");
  151.   }
  152. ***************
  153. *** 157,161 ****
  154.   {
  155.      struct BoxRec    * box_ptr = ObjPtr->detail.b;
  156. !    int            fill, pen, pixel, func, ltx, lty, rbx, rby, width;
  157.      int            real_x_off, real_y_off;
  158.      char            s[80];
  159. --- 176,180 ----
  160.   {
  161.      struct BoxRec    * box_ptr = ObjPtr->detail.b;
  162. !    int            fill, pen, pixel, func, ltx, lty, rbx, rby, width, dash;
  163.      int            real_x_off, real_y_off;
  164.      char            s[80];
  165. ***************
  166. *** 165,168 ****
  167. --- 184,188 ----
  168.      fill = ObjPtr->detail.b->fill;
  169.      width = ObjPtr->detail.b->width;
  170. +    dash = ObjPtr->detail.b->dash;
  171.      pixel = colorPixels[ObjPtr->color];
  172.   
  173. ***************
  174. *** 193,199 ****
  175.         values.stipple = patPixmap[pen];
  176.         values.line_width = widthOfLine[width] >> zoomScale;
  177.         XChangeGC (mainDisplay, drawGC,
  178. !             GCForeground | GCFunction | GCFillStyle | GCStipple | GCLineWidth,
  179. !             &values);
  180.         XDrawRectangle (mainDisplay, win, drawGC, ltx, lty, rbx-ltx, rby-lty);
  181.      }
  182. --- 213,227 ----
  183.         values.stipple = patPixmap[pen];
  184.         values.line_width = widthOfLine[width] >> zoomScale;
  185. +       if (dash != 0)
  186. +       {
  187. +          XSetDashes (mainDisplay, drawGC, 0, dashList[dash],
  188. +                dashListLength[dash]);
  189. +          values.line_style = LineOnOffDash;
  190. +       }
  191. +       else
  192. +          values.line_style = LineSolid;
  193.         XChangeGC (mainDisplay, drawGC,
  194. !             GCForeground | GCFunction | GCFillStyle | GCStipple | GCLineWidth |
  195. !             GCLineStyle, &values);
  196.         XDrawRectangle (mainDisplay, win, drawGC, ltx, lty, rbx-ltx, rby-lty);
  197.      }
  198. ***************
  199. *** 212,215 ****
  200. --- 240,244 ----
  201.      box_ptr->width = lineWidth;
  202.      box_ptr->pen = penPat;
  203. +    box_ptr->dash = curDash;
  204.   
  205.      obj_ptr = (struct ObjRec *) calloc (1, sizeof(struct ObjRec));
  206. ***************
  207. *** 273,279 ****
  208.      values.fill_style = FillSolid;
  209.      values.line_width = 0;
  210.   
  211.      XChangeGC (mainDisplay, drawGC,
  212. !          GCForeground | GCFunction | GCFillStyle | GCLineWidth, &values);
  213.   
  214.      saved_x = grid_x = OrigX;
  215. --- 302,310 ----
  216.      values.fill_style = FillSolid;
  217.      values.line_width = 0;
  218. +    values.line_style = LineSolid;
  219.   
  220.      XChangeGC (mainDisplay, drawGC,
  221. !          GCForeground | GCFunction | GCFillStyle | GCLineWidth | GCLineStyle,
  222. !          &values);
  223.   
  224.      saved_x = grid_x = OrigX;
  225. ***************
  226. *** 341,349 ****
  227.      struct ObjRec    * ObjPtr;
  228.   {
  229. !    fprintf (FP, "box(%s,", colorMenuItems[ObjPtr->color]);
  230. !    fprintf (FP, "%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,", ObjPtr->obbox.ltx,
  231.            ObjPtr->obbox.lty, ObjPtr->obbox.rbx, ObjPtr->obbox.rby,
  232.            ObjPtr->detail.b->fill, ObjPtr->detail.b->width,
  233. !          ObjPtr->detail.b->pen, ObjPtr->id);
  234.      SaveAttrs (FP, ObjPtr->lattr);
  235.      fprintf (FP, ")");
  236. --- 372,380 ----
  237.      struct ObjRec    * ObjPtr;
  238.   {
  239. !    fprintf (FP, "box('%s',", colorMenuItems[ObjPtr->color]);
  240. !    fprintf (FP, "%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,", ObjPtr->obbox.ltx,
  241.            ObjPtr->obbox.lty, ObjPtr->obbox.rbx, ObjPtr->obbox.rby,
  242.            ObjPtr->detail.b->fill, ObjPtr->detail.b->width,
  243. !          ObjPtr->detail.b->pen, ObjPtr->id, ObjPtr->detail.b->dash);
  244.      SaveAttrs (FP, ObjPtr->lattr);
  245.      fprintf (FP, ")");
  246. ***************
  247. *** 356,360 ****
  248.      struct BoxRec    * box_ptr;
  249.      char            color_str[20], * s;
  250. !    int            ltx, lty, rbx, rby, fill, width, pen, w;
  251.   
  252.      *ObjPtr = (struct ObjRec *) calloc (1, sizeof(struct ObjRec));
  253. --- 387,391 ----
  254.      struct BoxRec    * box_ptr;
  255.      char            color_str[20], * s;
  256. !    int            ltx, lty, rbx, rby, fill, width, pen, dash, w;
  257.   
  258.      *ObjPtr = (struct ObjRec *) calloc (1, sizeof(struct ObjRec));
  259. ***************
  260. *** 373,376 ****
  261. --- 404,408 ----
  262.         }
  263.         (*ObjPtr)->id = objId++;
  264. +       dash = 0;
  265.      }
  266.      else if (fileVersion <= 7)
  267. ***************
  268. *** 379,384 ****
  269.               <x, <y, &rbx, &rby, &fill, &width, &pen);
  270.         (*ObjPtr)->id = objId++;
  271.      }
  272. !    else
  273.      {
  274.         sscanf (s, "%d , %d , %d , %d , %d , %d , %d , %d",
  275. --- 411,417 ----
  276.               <x, <y, &rbx, &rby, &fill, &width, &pen);
  277.         (*ObjPtr)->id = objId++;
  278. +       dash = 0;
  279.      }
  280. !    else if (fileVersion <= 8)
  281.      {
  282.         sscanf (s, "%d , %d , %d , %d , %d , %d , %d , %d",
  283. ***************
  284. *** 385,389 ****
  285. --- 418,430 ----
  286.               <x, <y, &rbx, &rby, &fill, &width, &pen, &((*ObjPtr)->id));
  287.         if ((*ObjPtr)->id >= objId) objId = (*ObjPtr)->id + 1;
  288. +       dash = 0;
  289.      }
  290. +    else
  291. +    {
  292. +       sscanf (s, "%d , %d , %d , %d , %d , %d , %d , %d , %d",
  293. +             <x, <y, &rbx, &rby, &fill, &width, &pen, &((*ObjPtr)->id),
  294. +             &dash);
  295. +       if ((*ObjPtr)->id >= objId) objId = (*ObjPtr)->id + 1;
  296. +    }
  297.   
  298.      box_ptr->fill = fill;
  299. ***************
  300. *** 390,393 ****
  301. --- 431,435 ----
  302.      box_ptr->width = width;
  303.      box_ptr->pen = pen;
  304. +    box_ptr->dash = dash;
  305.      (*ObjPtr)->x = ltx;
  306.      (*ObjPtr)->y = lty;
  307. *** choice.c.orig    Mon Jan  7 13:00:59 1991
  308. --- choice.c    Mon Jan  7 13:01:01 1991
  309. ***************
  310. *** 6,10 ****
  311.   #ifndef lint
  312.   static char RCSid[] =
  313. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/choice.c,v 1.9 90/10/27 15:12:25 william Exp $";
  314.   #endif
  315.   
  316. --- 6,10 ----
  317.   #ifndef lint
  318.   static char RCSid[] =
  319. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/choice.c,v 1.10 90/11/01 08:41:44 william Exp $";
  320.   #endif
  321.   
  322. ***************
  323. *** 62,67 ****
  324.   }
  325.   
  326. ! void ShowColor ()
  327.   {
  328.      XGCValues    values;
  329.   
  330. --- 62,79 ----
  331.   }
  332.   
  333. ! void ShowWhereToPrint ()
  334.   {
  335. +    if (colorDump)
  336. +       XSetForeground (mainDisplay, rasterGC, colorPixels[colorIndex]);
  337. +    XSetStipple (mainDisplay, rasterGC, whereToPrintPixmap[whereToPrint]);
  338. +    XFillRectangle (mainDisplay, choiceWindow, rasterGC, 6*choiceImageW, 0,
  339. +          choiceImageW, choiceImageH);
  340. +    if (colorDump)
  341. +       XSetForeground (mainDisplay, rasterGC, myFgPixel);
  342. + }
  343. + void ShowColor (PropagateWhereToPrint)
  344. +    int    PropagateWhereToPrint;
  345. + {
  346.      XGCValues    values;
  347.   
  348. ***************
  349. *** 78,81 ****
  350. --- 90,94 ----
  351.               0, choiceImageH, choiceImageW, choiceImageH);
  352.      }
  353. +    if (PropagateWhereToPrint) ShowWhereToPrint ();
  354.   }
  355.   
  356. ***************
  357. *** 117,155 ****
  358.      h = canvasFontHeight;
  359.   
  360. !    switch (curRotate)
  361. !    {
  362. !       case ROTATE0:
  363. !          x = (w > choiceImageW) ?
  364. !                2*choiceImageW - (w-choiceImageW)/2 :
  365. !                2*choiceImageW + (choiceImageW-w)/2;
  366. !          y = (h > choiceImageH) ?
  367. !                choiceImageH + (canvasFontAsc-(h-choiceImageH)/2) :
  368. !                choiceImageH + (canvasFontAsc+(choiceImageH-h)/2);
  369. !          break;
  370. !       case ROTATE90:
  371. !          x = (h > choiceImageW) ?
  372. !                2*choiceImageW + h - (h-choiceImageW)/2 :
  373. !                2*choiceImageW + h + (choiceImageW-h)/2;
  374. !          y = (w > choiceImageH) ?
  375. !                choiceImageH - (w-choiceImageH)/2 :
  376. !                choiceImageH + (choiceImageH-w)/2;
  377. !          break;
  378. !       case ROTATE180:
  379. !          x = (w > choiceImageW) ?
  380. !                2*choiceImageW + w - (w-choiceImageW)/2 :
  381. !                2*choiceImageW + w + (choiceImageW-w)/2;
  382. !          y = (h > choiceImageH) ?
  383. !                2*choiceImageH + (h-choiceImageH)/2 :
  384. !                2*choiceImageH - (choiceImageH-h)/2;
  385. !          break;
  386. !       case ROTATE270:
  387. !          x = (h > choiceImageW) ?
  388. !                2*choiceImageW - (h-choiceImageW)/2 :
  389. !                2*choiceImageW + (choiceImageW-h)/2;
  390. !          y = (w > choiceImageH) ?
  391. !                2*choiceImageH + (w-choiceImageH)/2 :
  392. !                2*choiceImageH - (choiceImageH-w)/2;
  393. !          break;
  394. !    }
  395.   
  396.      XClearArea (mainDisplay, choiceWindow, 2*choiceImageW, choiceImageH,
  397. --- 130,139 ----
  398.      h = canvasFontHeight;
  399.   
  400. !    x = (w > choiceImageW) ?
  401. !          2*choiceImageW - (w-choiceImageW)/2 :
  402. !          2*choiceImageW + (choiceImageW-w)/2;
  403. !    y = (h > choiceImageH) ?
  404. !          choiceImageH + (canvasFontAsc-(h-choiceImageH)/2) :
  405. !          choiceImageH + (canvasFontAsc+(choiceImageH-h)/2);
  406.   
  407.      XClearArea (mainDisplay, choiceWindow, 2*choiceImageW, choiceImageH,
  408. ***************
  409. *** 157,215 ****
  410.   
  411.      XSetFont (mainDisplay, choiceGC, canvasFontPtr->fid);
  412. !    if (curRotate == 0)
  413. !    {
  414. !       XSetClipRectangles (mainDisplay, choiceGC, 0, 0, recs, 1, YXBanded);
  415.   
  416. !       values.foreground = myFgPixel;
  417. !       values.background = myBgPixel;
  418. !       XChangeGC (mainDisplay, choiceGC, GCForeground | GCBackground, &values);
  419.   
  420. !       XDrawString (mainDisplay, choiceWindow, choiceGC, x, y, "W", 1);
  421.   
  422. !       values.foreground = 1;
  423. !       values.background = 0;
  424. !       XChangeGC (mainDisplay, choiceGC, GCForeground | GCBackground, &values);
  425. !    }
  426. !    else
  427. !    {
  428. !       XSetForeground (mainDisplay, choiceGC, 0);
  429. !       XFillRectangle (mainDisplay, choiceBackingPixmap, choiceGC, 0, 0,
  430. !          choiceWindowW, choiceWindowH);
  431. !       XSetForeground (mainDisplay, choiceGC, 1);
  432.   
  433. -       XDrawImageString (mainDisplay, choiceBackingPixmap, choiceGC, 0,
  434. -             canvasFontAsc, "W", 1);
  435. -       image = XGetImage (mainDisplay, choiceBackingPixmap, 0, 0, w, h, 1,
  436. -             XYPixmap);
  437. -       XSetClipRectangles (mainDisplay, choiceGC, 0, 0, recs, 1, YXBanded);
  438. -       values.foreground = myFgPixel;
  439. -       values.background = myBgPixel;
  440. -       XChangeGC (mainDisplay, choiceGC, GCForeground | GCBackground, &values);
  441. -       saved_x = x;
  442. -       saved_y = y;
  443. -       for (i = 0; i < w; i++)
  444. -          for (j = 0; j < h; j++)
  445. -             if (XGetPixel (image, i, j) == 1)
  446. -             {
  447. -                switch (curRotate)
  448. -                {
  449. -                   case ROTATE90: x = saved_x-j; y = saved_y+i; break;
  450. -                   case ROTATE180: x = saved_x-i; y = saved_y-j; break;
  451. -                   case ROTATE270: x = saved_x+j; y = saved_y-i; break;
  452. -                }
  453. - #ifdef sun
  454. -                XDrawPoint (mainDisplay, choiceWindow, defaultGC, x, y);
  455. - #else
  456. -                XDrawLine (mainDisplay,choiceWindow,defaultGC,x,y,x,y);
  457. - #endif
  458. -             }
  459. -       values.foreground = 1;
  460. -       values.background = 0;
  461. -       XChangeGC (mainDisplay, choiceGC, GCForeground | GCBackground, &values);
  462. -    }
  463.      recs[0].x = 0;
  464.      recs[0].y = 0;
  465. --- 141,156 ----
  466.   
  467.      XSetFont (mainDisplay, choiceGC, canvasFontPtr->fid);
  468. !    XSetClipRectangles (mainDisplay, choiceGC, 0, 0, recs, 1, YXBanded);
  469.   
  470. !    values.foreground = myFgPixel;
  471. !    values.background = myBgPixel;
  472. !    XChangeGC (mainDisplay, choiceGC, GCForeground | GCBackground, &values);
  473.   
  474. !    XDrawString (mainDisplay, choiceWindow, choiceGC, x, y, "W", 1);
  475.   
  476. !    values.foreground = 1;
  477. !    values.background = 0;
  478. !    XChangeGC (mainDisplay, choiceGC, GCForeground | GCBackground, &values);
  479.   
  480.      recs[0].x = 0;
  481.      recs[0].y = 0;
  482. ***************
  483. *** 219,245 ****
  484.   }
  485.   
  486. ! void ShowLineWidth ()
  487.   {
  488. !    XSetStipple (mainDisplay, rasterGC, shortLineWidthPixmap[lineWidth]);
  489.      XFillRectangle (mainDisplay, choiceWindow, rasterGC, 3*choiceImageW, 0,
  490.            choiceImageW, choiceImageH);
  491. - /* XGCValues    values;
  492. -    XClearArea (mainDisplay, choiceWindow, 3*choiceImageW, 0,
  493. -          choiceImageW, choiceImageH, FALSE);
  494. -    if (curDash != 0)
  495. -       XSetDashes (mainDisplay, rasterGC, 0, dashList[curDash],
  496. -             dashListLength[curDash]);
  497. -    values.line_width = widthOfLine[lineWidth];
  498. -    XChangeGC (mainDisplay, rasterGC, GCLineWidth, &values);
  499. -    XDrawLine (mainDisplay, choiceWindow, rasterGC,
  500. -          3*choiceImageW+3, (int)(choiceImageH/2), 4*choiceImageW-3,
  501. -          (int)(choiceImageH/2)); */
  502.   }
  503.   
  504. ! void ShowLineStyle ()
  505.   {
  506. !    XSetStipple (mainDisplay, rasterGC, shortLineStylePixmap[lineStyle]);
  507.      XFillRectangle (mainDisplay, choiceWindow, rasterGC, 3*choiceImageW,
  508.            choiceImageH, choiceImageW, choiceImageH);
  509. --- 160,173 ----
  510.   }
  511.   
  512. ! void ShowRotate ()
  513.   {
  514. !    XSetStipple (mainDisplay, rasterGC, rotatePixmap[curRotate]);
  515.      XFillRectangle (mainDisplay, choiceWindow, rasterGC, 3*choiceImageW, 0,
  516.            choiceImageW, choiceImageH);
  517.   }
  518.   
  519. ! void ShowSpecial ()
  520.   {
  521. !    XSetStipple (mainDisplay, rasterGC, specialPixmap);
  522.      XFillRectangle (mainDisplay, choiceWindow, rasterGC, 3*choiceImageW,
  523.            choiceImageH, choiceImageW, choiceImageH);
  524. ***************
  525. *** 246,252 ****
  526.   }
  527.   
  528. ! void ShowWhereToPrint ()
  529.   {
  530. !    XSetStipple (mainDisplay, rasterGC, whereToPrintPixmap[whereToPrint]);
  531.      XFillRectangle (mainDisplay, choiceWindow, rasterGC, 4*choiceImageW, 0,
  532.            choiceImageW, choiceImageH);
  533. --- 174,180 ----
  534.   }
  535.   
  536. ! void ShowLineWidth ()
  537.   {
  538. !    XSetStipple (mainDisplay, rasterGC, shortLineWidthPixmap[lineWidth]);
  539.      XFillRectangle (mainDisplay, choiceWindow, rasterGC, 4*choiceImageW, 0,
  540.            choiceImageW, choiceImageH);
  541. ***************
  542. *** 253,263 ****
  543.   }
  544.   
  545.   void ShowLineType ()
  546.   {
  547.      XSetStipple (mainDisplay, rasterGC, shortLineTypePixmap[curSpline]);
  548. !    XFillRectangle (mainDisplay, choiceWindow, rasterGC, 4*choiceImageW,
  549.            choiceImageH, choiceImageW, choiceImageH);
  550.   }
  551.   
  552.   void ShowFill ()
  553.   {
  554. --- 181,212 ----
  555.   }
  556.   
  557. + void ShowLineStyle ()
  558. + {
  559. +    XSetStipple (mainDisplay, rasterGC, shortLineStylePixmap[lineStyle]);
  560. +    XFillRectangle (mainDisplay, choiceWindow, rasterGC, 4*choiceImageW,
  561. +          choiceImageH, choiceImageW, choiceImageH);
  562. + }
  563.   void ShowLineType ()
  564.   {
  565.      XSetStipple (mainDisplay, rasterGC, shortLineTypePixmap[curSpline]);
  566. !    XFillRectangle (mainDisplay, choiceWindow, rasterGC, 5*choiceImageW, 0,
  567. !          choiceImageW, choiceImageH);
  568. ! }
  569. ! void ShowDash ()
  570. ! {
  571. !    XSetStipple (mainDisplay, rasterGC, shortDashPixmap[curDash]);
  572. !    XFillRectangle (mainDisplay, choiceWindow, rasterGC, 5*choiceImageW,
  573.            choiceImageH, choiceImageW, choiceImageH);
  574.   }
  575.   
  576. + void ShowFile ()
  577. + {
  578. +    XSetStipple (mainDisplay, rasterGC, filePixmap);
  579. +    XFillRectangle (mainDisplay, choiceWindow, rasterGC, 6*choiceImageW,
  580. +          choiceImageH, choiceImageW, choiceImageH);
  581. + }
  582.   void ShowFill ()
  583.   {
  584. ***************
  585. *** 274,278 ****
  586.   
  587.      XFillRectangle (mainDisplay, choiceWindow, patGC,
  588. !          5*choiceImageW, 0, choiceImageW, choiceImageH);
  589.   }
  590.   
  591. --- 223,227 ----
  592.   
  593.      XFillRectangle (mainDisplay, choiceWindow, patGC,
  594. !          7*choiceImageW, 0, choiceImageW, choiceImageH);
  595.   }
  596.   
  597. ***************
  598. *** 291,295 ****
  599.   
  600.      XFillRectangle (mainDisplay, choiceWindow, patGC,
  601. !          5*choiceImageW, choiceImageH, choiceImageW, choiceImageH);
  602.   }
  603.   
  604. --- 240,244 ----
  605.   
  606.      XFillRectangle (mainDisplay, choiceWindow, patGC,
  607. !          7*choiceImageW, choiceImageH, choiceImageW, choiceImageH);
  608.   }
  609.   
  610. ***************
  611. *** 398,402 ****
  612.                     if (curChoice != NOTHING) SetCurChoice (NOTHING);
  613.                     colorIndex = (colorIndex+maxColors+delta) % maxColors;
  614. !                   ShowColor ();
  615.                     if (topSel != NULL) ChangeAllSelColor (colorIndex);
  616.                  }
  617. --- 347,351 ----
  618.                     if (curChoice != NOTHING) SetCurChoice (NOTHING);
  619.                     colorIndex = (colorIndex+maxColors+delta) % maxColors;
  620. !                   ShowColor (TRUE);
  621.                     if (topSel != NULL) ChangeAllSelColor (colorIndex);
  622.                  }
  623. ***************
  624. *** 406,410 ****
  625.               if (yindex == 0)
  626.               {
  627. !                if (delta != 0)
  628.                  {
  629.                     horiAlign = (horiAlign+MAXALIGNS+delta) % MAXALIGNS;
  630. --- 355,361 ----
  631.               if (yindex == 0)
  632.               {
  633. !                if (delta == 0)
  634. !                   SizeMenu (x, y);
  635. !                else
  636.                  {
  637.                     horiAlign = (horiAlign+MAXALIGNS+delta) % MAXALIGNS;
  638. ***************
  639. *** 414,418 ****
  640.               else
  641.               {
  642. !                if (delta != 0)
  643.                  {
  644.                     vertAlign = (vertAlign+MAXALIGNS+delta) % MAXALIGNS;
  645. --- 365,371 ----
  646.               else
  647.               {
  648. !                if (delta == 0)
  649. !                   FontDPIMenu (x, y);
  650. !                else
  651.                  {
  652.                     vertAlign = (vertAlign+MAXALIGNS+delta) % MAXALIGNS;
  653. ***************
  654. *** 441,446 ****
  655.                  {
  656.                     if (curChoice != NOTHING) SetCurChoice (NOTHING);
  657. !                   curRotate = (curRotate+4+delta) % 4;
  658.                     ShowCurFont ();
  659.                     if (topSel != NULL)
  660.                     {
  661. --- 394,414 ----
  662.                  {
  663.                     if (curChoice != NOTHING) SetCurChoice (NOTHING);
  664. !                   curFont = (curFont+MAXFONTS+delta) % MAXFONTS;
  665. !                   SetCanvasFont ();
  666.                     ShowCurFont ();
  667. +                   if (topSel != NULL) ChangeFont (curFont);
  668. +                }
  669. +             }
  670. +             break;
  671. +          case 3:
  672. +             if (yindex == 0)
  673. +             {
  674. +                if (delta == 0)
  675. +                   ArrangeMenu (x, y);
  676. +                else
  677. +                {
  678. +                   if (curChoice != NOTHING) SetCurChoice (NOTHING);
  679. +                   curRotate = (curRotate+4+delta) % 4;
  680. +                   ShowRotate ();
  681.                     if (topSel != NULL)
  682.                     {
  683. ***************
  684. *** 452,457 ****
  685.                  }
  686.               }
  687.               break;
  688. !          case 3:
  689.               if (yindex == 0)
  690.               {
  691. --- 420,430 ----
  692.                  }
  693.               }
  694. +             else
  695. +             {
  696. +                if (delta == 0)
  697. +                   SpecialMenu (x, y);
  698. +             }
  699.               break;
  700. !          case 4:
  701.               if (yindex == 0)
  702.               {
  703. ***************
  704. *** 479,495 ****
  705.               }
  706.               break;
  707. !          case 4:
  708.               if (yindex == 0)
  709.               {
  710.                  if (delta == 0)
  711. !                   LayoutMenu (x, y);
  712.                  else
  713.                  {
  714. !                   whereToPrint = !whereToPrint;
  715. !                   ShowWhereToPrint ();
  716. !                   if (whereToPrint == PRINTER)
  717. !                      Msg ("Print device set to printer.");
  718. !                   else
  719. !                      Msg ("Print device set to LaTeX-Figure file.");
  720.                  }
  721.               }
  722. --- 452,466 ----
  723.               }
  724.               break;
  725. !          case 5:
  726.               if (yindex == 0)
  727.               {
  728.                  if (delta == 0)
  729. !                   LineStyleMenu (x, y);
  730.                  else
  731.                  {
  732. !                   if (curChoice != NOTHING) SetCurChoice (NOTHING);
  733. !                   curSpline = (curSpline+MAXLINETYPES+delta) % MAXLINETYPES;
  734. !                   ShowLineType ();
  735. !                   if (topSel != NULL) ChangeAllSelLineType (curSpline);
  736.                  }
  737.               }
  738. ***************
  739. *** 501,511 ****
  740.                  {
  741.                     if (curChoice != NOTHING) SetCurChoice (NOTHING);
  742. !                   curSpline = (curSpline+MAXLINETYPES+delta) % MAXLINETYPES;
  743. !                   ShowLineType ();
  744. !                   if (topSel != NULL) ChangeAllSelLineType (curSpline);
  745.                  }
  746.               }
  747.               break;
  748. !          case 5:
  749.               if (yindex == 0)
  750.               {
  751. --- 472,496 ----
  752.                  {
  753.                     if (curChoice != NOTHING) SetCurChoice (NOTHING);
  754. !                   curDash = (curDash+MAXDASHES+delta) % MAXDASHES;
  755. !                   ShowDash ();
  756. !                   if (topSel != NULL) ChangeAllSelDashes (curDash);
  757.                  }
  758.               }
  759.               break;
  760. !          case 6:
  761. !             if (yindex == 0)
  762. !             {
  763. !                if (delta == 0)
  764. !                   LayoutMenu (x, y);
  765. !                else
  766. !                   ToggleWhereToPrint ();
  767. !             }
  768. !             else
  769. !             {
  770. !                if (delta == 0)
  771. !                   FileMenu (x, y);
  772. !             }
  773. !             break;
  774. !          case 7:
  775.               if (yindex == 0)
  776.               {
  777. *** color.c.orig    Mon Jan  7 13:01:08 1991
  778. --- color.c    Mon Jan  7 13:01:09 1991
  779. ***************
  780. *** 6,10 ****
  781.   #ifndef lint
  782.   static char RCSid[] =
  783. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/color.c,v 1.14 90/10/27 16:29:54 william Exp $";
  784.   #endif
  785.   
  786. --- 6,10 ----
  787.   #ifndef lint
  788.   static char RCSid[] =
  789. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/color.c,v 1.16 90/11/10 13:47:29 william Exp $";
  790.   #endif
  791.   
  792. ***************
  793. *** 22,25 ****
  794. --- 22,27 ----
  795.   #include "text.e"
  796.   
  797. + #define COLORSTRLEN 80
  798.   int    maxColors = MAXCOLORS;
  799.   int    defaultColorIndex = 4;
  800. ***************
  801. *** 32,35 ****
  802. --- 34,39 ----
  803.   int    colorDump = FALSE;
  804.   
  805. + static int    allocatedMaxColors = MAXCOLORS;
  806.   static char    * defaultColorMenuItems[MAXCOLORS] =
  807.   {
  808. ***************
  809. *** 75,79 ****
  810.   void InitColor ()
  811.   {
  812. !    register int    i;
  813.      XColor    color, exact_def;
  814.      char        buf[80], * c_ptr, fg_color[80], bg_color[80], brdr_color[80];
  815. --- 79,83 ----
  816.   void InitColor ()
  817.   {
  818. !    register int    i, index;
  819.      XColor    color, exact_def;
  820.      char        buf[80], * c_ptr, fg_color[80], bg_color[80], brdr_color[80];
  821. ***************
  822. *** 154,157 ****
  823. --- 158,165 ----
  824.      tgifColors = (XColor *) calloc (maxColors, sizeof (XColor));
  825.   
  826. +    allocatedMaxColors = maxColors;
  827. +    for (i = 0; i < allocatedMaxColors; i++)
  828. +       colorMenuItems[i] = (char *) calloc (COLORSTRLEN, sizeof(char));
  829.      if (color_in_x_default)
  830.      {
  831. ***************
  832. *** 160,167 ****
  833.            sprintf (buf, "Color%1d", i);
  834.            if ((c_ptr = XGetDefault (mainDisplay, TOOL_NAME, buf)) != NULL)
  835. -          {
  836. -             colorMenuItems[i] = (char *) calloc (strlen(c_ptr),sizeof(char));
  837.               strcpy (colorMenuItems[i], c_ptr);
  838. -          }
  839.            else
  840.            {
  841. --- 168,172 ----
  842. ***************
  843. *** 177,189 ****
  844.      if (colorDisplay)
  845.      {
  846.         for (i = 0; i < maxColors; i++)
  847.         {
  848. !          XAllocNamedColor(mainDisplay, mainColormap, colorMenuItems[i], &color,
  849. !                &exact_def);
  850. !          colorPixels[i] = color.pixel;
  851.   
  852. !          tgifColors[i].red = color.red;
  853. !          tgifColors[i].green = color.green;
  854. !          tgifColors[i].blue = color.blue;
  855.      
  856.            if (strcmp (colorMenuItems[i], fg_color) == 0)
  857. --- 182,199 ----
  858.      if (colorDisplay)
  859.      {
  860. +       index = 0;
  861.         for (i = 0; i < maxColors; i++)
  862.         {
  863. !          if (!XAllocNamedColor(mainDisplay, mainColormap, colorMenuItems[i],
  864. !                &color, &exact_def))
  865. !             continue;
  866.   
  867. !          if (i != index) strcpy (colorMenuItems[index], colorMenuItems[i]);
  868. !          colorPixels[index] = color.pixel;
  869. !          tgifColors[index].red = color.red;
  870. !          tgifColors[index].green = color.green;
  871. !          tgifColors[index].blue = color.blue;
  872.      
  873.            if (strcmp (colorMenuItems[i], fg_color) == 0)
  874. ***************
  875. *** 210,215 ****
  876. --- 220,228 ----
  877.               brdr_allocated = TRUE;
  878.            }
  879. +          index++;
  880.         }
  881.   
  882. +       maxColors = index;
  883.         if (!fg_allocated)
  884.         {
  885. ***************
  886. *** 314,318 ****
  887.         text_obj_created = TieLooseEnds ();
  888.         colorIndex = ColorIndex;
  889. !       ShowColor ();
  890.         if (!text_obj_created && curChoice == DRAWTEXT && text_cursor_shown)
  891.         {
  892. --- 327,331 ----
  893.         text_obj_created = TieLooseEnds ();
  894.         colorIndex = ColorIndex;
  895. !       ShowColor (TRUE);
  896.         if (!text_obj_created && curChoice == DRAWTEXT && text_cursor_shown)
  897.         {
  898. ***************
  899. *** 381,386 ****
  900.      else
  901.         w = (int)(maxColors / 10) + 1;
  902. !    index = PxMpMenuLoop (X, Y, choiceImageW, choiceImageH, 10, w,
  903. !          maxColors, fore_colors, pixmap, MULTICOLOR);
  904.   
  905.      if (index != INVALID) ChangeAllSelColor (index);
  906. --- 394,403 ----
  907.      else
  908.         w = (int)(maxColors / 10) + 1;
  909. !    if (maxColors <= 10)
  910. !       index = PxMpMenuLoop (X, Y, choiceImageW, choiceImageH, maxColors, w,
  911. !             maxColors, fore_colors, pixmap, MULTICOLOR);
  912. !    else
  913. !       index = PxMpMenuLoop (X, Y, choiceImageW, choiceImageH, 10, w,
  914. !             maxColors, fore_colors, pixmap, MULTICOLOR);
  915.   
  916.      if (index != INVALID) ChangeAllSelColor (index);
  917. ***************
  918. *** 394,398 ****
  919.      cfree (colorPixels);
  920.      cfree (xorColorPixels);
  921. !    if (colorDisplay) for (i = 0; i < maxColors; i++) cfree (colorMenuItems[i]);
  922.      cfree (colorMenuItems);
  923.   
  924. --- 411,415 ----
  925.      cfree (colorPixels);
  926.      cfree (xorColorPixels);
  927. !    for (i = 0; i < allocatedMaxColors; i++) cfree (colorMenuItems[i]);
  928.      cfree (colorMenuItems);
  929.   
  930. *** drawing.c.orig    Mon Jan  7 13:01:21 1991
  931. --- drawing.c    Mon Jan  7 13:01:23 1991
  932. ***************
  933. *** 6,10 ****
  934.   #ifndef lint
  935.   static char RCSid[] =
  936. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/drawing.c,v 1.11 90/08/16 09:34:54 william Exp $";
  937.   #endif
  938.   
  939. --- 6,10 ----
  940.   #ifndef lint
  941.   static char RCSid[] =
  942. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/drawing.c,v 1.13 90/11/01 18:06:41 william Exp $";
  943.   #endif
  944.   
  945. ***************
  946. *** 549,553 ****
  947.               case '\011': /*^#I*/ MakeIconic (); break;
  948.               case '\012': /*^#J*/ UnMakeIconic (); break;
  949. !             case '\013': /*^#K*/ break;
  950.               case '\014': /*^#L*/ ChangeFontJust (JUST_L); break;
  951.               case '\015': /*^#M*/ MakeSymbolic (); break;
  952. --- 549,553 ----
  953.               case '\011': /*^#I*/ MakeIconic (); break;
  954.               case '\012': /*^#J*/ UnMakeIconic (); break;
  955. !             case '\013': /*^#K*/ ToggleColorPostScript (); break;
  956.               case '\014': /*^#L*/ ChangeFontJust (JUST_L); break;
  957.               case '\015': /*^#M*/ MakeSymbolic (); break;
  958. ***************
  959. *** 559,566 ****
  960.               case '\023': /*^#S*/ SaveNewFile (); break;
  961.               case '\024': /*^#T*/ ChangeFontStyle (STYLE_NI); break;
  962. !             case '\025': /*^#U*/ break;
  963.               case '\026': /*^#V*/ SetCurChoice (DRAWCIRCLE); break;
  964.               case '\027': /*^#W*/ ToggleAllSelLineType (); break;
  965. !             case '\030': /*^#X*/ break;
  966.               case '\031': /*^#Y*/ PasteFromCutBuffer (); break;
  967.               case '\032': /*^#Z*/ break;
  968. --- 559,566 ----
  969.               case '\023': /*^#S*/ SaveNewFile (); break;
  970.               case '\024': /*^#T*/ ChangeFontStyle (STYLE_NI); break;
  971. !             case '\025': /*^#U*/ UpdateSymbols (); break;
  972.               case '\026': /*^#V*/ SetCurChoice (DRAWCIRCLE); break;
  973.               case '\027': /*^#W*/ ToggleAllSelLineType (); break;
  974. !             case '\030': /*^#X*/ ToggleWhereToPrint (); break;
  975.               case '\031': /*^#Y*/ PasteFromCutBuffer (); break;
  976.               case '\032': /*^#Z*/ break;
  977. *** dup.c.orig    Mon Jan  7 13:01:29 1991
  978. --- dup.c    Mon Jan  7 13:01:30 1991
  979. ***************
  980. *** 6,10 ****
  981.   #ifndef lint
  982.   static char RCSid[] =
  983. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/dup.c,v 1.6 90/08/16 09:35:11 william Exp $";
  984.   #endif
  985.   
  986. --- 6,10 ----
  987.   #ifndef lint
  988.   static char RCSid[] =
  989. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/dup.c,v 1.7 90/10/30 16:57:29 william Exp $";
  990.   #endif
  991.   
  992. ***************
  993. *** 77,80 ****
  994. --- 77,81 ----
  995.         poly_ptr->svlist = v;
  996.      }
  997. +    poly_ptr->dash = PolyPtr->dash;
  998.   
  999.      ObjPtr->detail.p = poly_ptr;
  1000. ***************
  1001. *** 113,116 ****
  1002. --- 114,118 ----
  1003.         polygon_ptr->svlist = v;
  1004.      }
  1005. +    polygon_ptr->dash = PolygonPtr->dash;
  1006.   
  1007.      ObjPtr->detail.g = polygon_ptr;
  1008. ***************
  1009. *** 128,131 ****
  1010. --- 130,134 ----
  1011.      oval_ptr->width = OvalPtr->width;
  1012.      oval_ptr->pen = OvalPtr->pen;
  1013. +    oval_ptr->dash = OvalPtr->dash;
  1014.   
  1015.      ObjPtr->detail.o = oval_ptr;
  1016. ***************
  1017. *** 143,146 ****
  1018. --- 146,150 ----
  1019.      box_ptr->width = BoxPtr->width;
  1020.      box_ptr->pen = BoxPtr->pen;
  1021. +    box_ptr->dash = BoxPtr->dash;
  1022.   
  1023.      ObjPtr->detail.b = box_ptr;
  1024. *** edit.c.orig    Mon Jan  7 13:01:50 1991
  1025. --- edit.c    Mon Jan  7 13:01:52 1991
  1026. ***************
  1027. *** 6,10 ****
  1028.   #ifndef lint
  1029.   static char RCSid[] =
  1030. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/edit.c,v 1.13 90/08/21 16:03:43 william Exp $";
  1031.   #endif
  1032.   
  1033. --- 6,10 ----
  1034.   #ifndef lint
  1035.   static char RCSid[] =
  1036. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/edit.c,v 1.14 90/11/01 18:21:29 william Exp $";
  1037.   #endif
  1038.   
  1039. ***************
  1040. *** 29,32 ****
  1041. --- 29,33 ----
  1042.   #include "select.e"
  1043.   #include "setup.e"
  1044. + #include "special.e"
  1045.   #include "spline.e"
  1046.   #include "stretch.e"
  1047. ***************
  1048. *** 739,741 ****
  1049. --- 740,837 ----
  1050.         case ROTATE_COUNTER: RotateCounter (); break;
  1051.      }
  1052. + }
  1053. + static struct ObjRec    * tmpTopObj, * tmpBotObj;
  1054. + static struct SelRec    * tmpTopSel, * tmpBotSel;
  1055. + static
  1056. + void PushTmpSel (ObjPtr)
  1057. +    struct ObjRec    * ObjPtr;
  1058. + {
  1059. +    struct SelRec    * sel_ptr;
  1060. +    ObjPtr->next = tmpTopObj;
  1061. +    ObjPtr->prev = NULL;
  1062. +    sel_ptr = (struct SelRec *) calloc (1, sizeof (struct SelRec));
  1063. +    sel_ptr->next = tmpTopSel;
  1064. +    sel_ptr->prev = NULL;
  1065. +    sel_ptr->obj = ObjPtr;
  1066. +    if (tmpTopObj == NULL)
  1067. +    {
  1068. +       tmpBotObj = ObjPtr;
  1069. +       tmpBotSel = sel_ptr;
  1070. +    }
  1071. +    else
  1072. +    {
  1073. +       tmpTopObj->prev = ObjPtr;
  1074. +       tmpTopSel->prev = sel_ptr;
  1075. +    }
  1076. +    tmpTopObj = ObjPtr;
  1077. +    tmpTopSel = sel_ptr;
  1078. + }
  1079. + void UpdateSymbols ()
  1080. + {
  1081. +    int            dx, dy, changed = FALSE;
  1082. +    char            path_name[MAXPATHLENGTH], sym_name[MAXPATHLENGTH];
  1083. +    struct ObjRec    * obj_ptr, * new_obj_ptr;
  1084. +    struct SelRec    * sel_ptr;
  1085. +    if (topSel == NULL) return;
  1086. +    tmpTopObj = tmpBotObj = NULL;
  1087. +    tmpTopSel = tmpBotSel = NULL;
  1088. +    for (sel_ptr = botSel; sel_ptr != NULL; sel_ptr = sel_ptr->prev)
  1089. +    {
  1090. +       obj_ptr = sel_ptr->obj;
  1091. +       if (obj_ptr->type != OBJ_ICON) continue;
  1092. +       strcpy (sym_name, obj_ptr->detail.r->s);
  1093. +       if (GetSymbolPath (obj_ptr->detail.r->s, path_name))
  1094. +       {
  1095. +          if ((new_obj_ptr = GetObjRepresentation (path_name, sym_name)) != NULL)
  1096. +          {
  1097. +             dx = obj_ptr->obbox.ltx - new_obj_ptr->obbox.ltx;
  1098. +             dy = obj_ptr->obbox.lty - new_obj_ptr->obbox.lty;
  1099. +             MoveObj (new_obj_ptr, dx, dy);
  1100. +             if (new_obj_ptr->bbox.ltx < selLtX) selLtX = new_obj_ptr->bbox.ltx;
  1101. +             if (new_obj_ptr->bbox.lty < selLtY) selLtY = new_obj_ptr->bbox.lty;
  1102. +             if (new_obj_ptr->bbox.rbx < selRbX) selRbX = new_obj_ptr->bbox.rbx;
  1103. +             if (new_obj_ptr->bbox.rby < selRbY) selRbY = new_obj_ptr->bbox.rby;
  1104. +             if (new_obj_ptr->obbox.ltx < selObjLtX)
  1105. +                   selObjLtX = new_obj_ptr->obbox.ltx;
  1106. +             if (new_obj_ptr->obbox.lty < selObjLtY)
  1107. +                   selObjLtY = new_obj_ptr->obbox.lty;
  1108. +             if (new_obj_ptr->obbox.rbx < selObjRbX)
  1109. +                   selObjRbX = new_obj_ptr->obbox.rbx;
  1110. +             if (new_obj_ptr->obbox.rby < selObjRbY)
  1111. +                   selObjRbY = new_obj_ptr->obbox.rby;
  1112. +             changed = TRUE;
  1113. +             UnlinkObj (obj_ptr);
  1114. +             PushTmpSel (obj_ptr);
  1115. +             sel_ptr->obj = new_obj_ptr;
  1116. +             AddObj (NULL, topObj, new_obj_ptr);
  1117. +          }
  1118. +       }
  1119. +    }
  1120. +    PushToCutBuffer (tmpTopSel, tmpBotSel);
  1121. +    if (changed)
  1122. +    {
  1123. +       HighLightReverse ();
  1124. +       RedrawAnArea (botObj, selLtX-(1<<zoomScale), selLtY-(1<<zoomScale),
  1125. +             selRbX+(1<<zoomScale), selRbY+(1<<zoomScale));
  1126. +       UpdSelBBox ();
  1127. +       HighLightForward ();
  1128. +       SetFileModified (TRUE);
  1129. +    }
  1130. +    justDupped = FALSE;
  1131.   }
  1132. *** file.c.orig    Mon Jan  7 13:02:38 1991
  1133. --- file.c    Mon Jan  7 13:02:47 1991
  1134. ***************
  1135. *** 6,10 ****
  1136.   #ifndef lint
  1137.   static char RCSid[] =
  1138. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/file.c,v 1.38 90/10/27 15:07:35 william Exp $";
  1139.   #endif
  1140.   
  1141. --- 6,10 ----
  1142.   #ifndef lint
  1143.   static char RCSid[] =
  1144. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/file.c,v 1.43 90/11/10 13:51:37 william Exp $";
  1145.   #endif
  1146.   
  1147. ***************
  1148. *** 46,50 ****
  1149.   #include "text.e"
  1150.   
  1151. ! #define CUR_VERSION 8
  1152.   #define START_HAVING_ATTRS 8
  1153.   
  1154. --- 46,50 ----
  1155.   #include "text.e"
  1156.   
  1157. ! #define CUR_VERSION 9
  1158.   #define START_HAVING_ATTRS 8
  1159.   
  1160. ***************
  1161. *** 107,111 ****
  1162.         fprintf (FP, "%1d,%1d,%1d,%1d,", curSpline, lineStyle, objFill, penPat);
  1163.         fprintf (FP, "%1d,%1d,%1d,%1d,", textJust, curFont, curStyle, curSize);
  1164. !       fprintf (FP, "%1d).\n", curFontDPI);
  1165.      }
  1166.   
  1167. --- 107,111 ----
  1168.         fprintf (FP, "%1d,%1d,%1d,%1d,", curSpline, lineStyle, objFill, penPat);
  1169.         fprintf (FP, "%1d,%1d,%1d,%1d,", textJust, curFont, curStyle, curSize);
  1170. !       fprintf (FP, "%1d,%1d).\n", curFontDPI, curDash);
  1171.      }
  1172.   
  1173. ***************
  1174. *** 188,191 ****
  1175. --- 188,192 ----
  1176.      char            new_file_name[MAXPATHLENGTH], s[MAXPATHLENGTH];
  1177.      char            new_full_name[MAXPATHLENGTH], tmp_str[MAXPATHLENGTH];
  1178. +    char            name_without_ext[MAXPATHLENGTH];
  1179.      FILE            * fp;
  1180.      int            count = 0, len;
  1181. ***************
  1182. *** 210,214 ****
  1183. --- 211,223 ----
  1184.               }
  1185.               else if (strcmp (&new_file_name[len-4], ".obj") != 0)
  1186. +             {
  1187. +                strcpy (name_without_ext, new_file_name);
  1188.                  strcat (new_file_name, ".obj");
  1189. +             }
  1190. +             else
  1191. +             {
  1192. +                strcpy (name_without_ext, new_file_name);
  1193. +                name_without_ext[len-4] = '\0';
  1194. +             }
  1195.   
  1196.               if (strlen (new_file_name) == 4)
  1197. ***************
  1198. *** 219,223 ****
  1199. --- 228,235 ----
  1200.            }
  1201.            else
  1202. +          {
  1203. +             strcpy (name_without_ext, new_file_name);
  1204.               strcat (new_file_name, ".obj");
  1205. +          }
  1206.            break;
  1207.         case 1:
  1208. ***************
  1209. *** 230,234 ****
  1210. --- 242,254 ----
  1211.               }
  1212.               else if (strcmp (&new_file_name[len-4], ".sym") != 0)
  1213. +             {
  1214. +                strcpy (name_without_ext, new_file_name);
  1215.                  strcat (new_file_name, ".sym");
  1216. +             }
  1217. +             else
  1218. +             {
  1219. +                strcpy (name_without_ext, new_file_name);
  1220. +                name_without_ext[len-4] = '\0';
  1221. +             }
  1222.   
  1223.               if (strlen (new_file_name) == 4)
  1224. ***************
  1225. *** 239,243 ****
  1226. --- 259,266 ----
  1227.            }
  1228.            else
  1229. +          {
  1230. +             strcpy (name_without_ext, new_file_name);
  1231.               strcat (new_file_name, ".sym");
  1232. +          }
  1233.            break;
  1234.         default:
  1235. ***************
  1236. *** 249,257 ****
  1237.         strcat (new_full_name, new_file_name);
  1238.      else
  1239. !    {
  1240. !       strcpy (new_full_name, curDir);
  1241. !       strcat (new_full_name, "/");
  1242. !       strcat (new_full_name, new_file_name);
  1243. !    }
  1244.   
  1245.      if (!OkayToCreateFile (new_full_name)) return;
  1246. --- 272,276 ----
  1247.         strcat (new_full_name, new_file_name);
  1248.      else
  1249. !       sprintf (new_full_name, "%s/%s", curDir, new_file_name);
  1250.   
  1251.      if (!OkayToCreateFile (new_full_name)) return;
  1252. ***************
  1253. *** 266,273 ****
  1254.      strcpy (tmp_str, curDir);
  1255.      SetCurDir (new_full_name);
  1256. -    *curSymDir = '\0';
  1257.      curFileDefined = TRUE;
  1258.   
  1259. !    if (strcmp (tmp_str, curDir) != 0) UpdateDirInfo ();
  1260.   
  1261.      sprintf (s, "Saving '%s/%s' ...", curDir, curFileName);
  1262. --- 285,302 ----
  1263.      strcpy (tmp_str, curDir);
  1264.      SetCurDir (new_full_name);
  1265.      curFileDefined = TRUE;
  1266.   
  1267. !    switch (count)
  1268. !    {
  1269. !       case 0:
  1270. !          *curSymDir = '\0';
  1271. !          if ((strcmp (tmp_str, curDir) != 0) || (!NameInCurDir (curFileName)))
  1272. !             UpdateDirInfo ();
  1273. !          break;
  1274. !       case 1:
  1275. !          strcpy (curSymDir, curDir);
  1276. !          if (!DirInSymPath (curDir)) UpdateSymInfo ();
  1277. !          break;
  1278. !    }
  1279.   
  1280.      sprintf (s, "Saving '%s/%s' ...", curDir, curFileName);
  1281. ***************
  1282. *** 328,342 ****
  1283.   
  1284.      if (strcmp (ext, "sym") == 0)
  1285. !    {
  1286. !       strcpy (full_name, curSymDir);
  1287. !       strcat (full_name, "/");
  1288. !       strcat (full_name, curFileName);
  1289. !    }
  1290.      else if (strcmp (ext, "obj") == 0)
  1291. !    {
  1292. !       strcpy (full_name, curDir);
  1293. !       strcat (full_name, "/");
  1294. !       strcat (full_name, curFileName);
  1295. !    }
  1296.   
  1297.      if ((fp = fopen (full_name, "w")) == NULL)
  1298. --- 357,363 ----
  1299.   
  1300.      if (strcmp (ext, "sym") == 0)
  1301. !       sprintf (full_name, "%s/%s", curSymDir, curFileName);
  1302.      else if (strcmp (ext, "obj") == 0)
  1303. !       sprintf (full_name, "%s/%s", curDir, curFileName);
  1304.   
  1305.      if ((fp = fopen (full_name, "w")) == NULL)
  1306. ***************
  1307. *** 362,370 ****
  1308.   {
  1309.      register char    * s = Str, * l = Left;
  1310.   
  1311. !    while (*s != '\0' && *s != C) *l++ = *s++;
  1312.   
  1313.      if (*s == C) s++;
  1314.      *l = '\0';
  1315.      return (s);
  1316.   }
  1317. --- 383,403 ----
  1318.   {
  1319.      register char    * s = Str, * l = Left;
  1320. +    register int        len = 0;
  1321.   
  1322. !    while (*s != '\0' && *s != C)
  1323. !    {
  1324. !       *l++ = *s++;
  1325. !       len++;
  1326. !    }
  1327.   
  1328.      if (*s == C) s++;
  1329.      *l = '\0';
  1330. +    while (len >= 2 && *Left == '\'' && *(l-1) == '\'')
  1331. +    {
  1332. +       *(--l) = '\0';
  1333. +       strcpy (Left, &Left[1]);
  1334. +       len -= 2;
  1335. +    }
  1336.      return (s);
  1337.   }
  1338. ***************
  1339. *** 425,428 ****
  1340. --- 458,462 ----
  1341.                  curSpline = LT_STRAIGHT;
  1342.               curFontDPI = FONT_DPI_75;
  1343. +             curDash = 0;
  1344.            }
  1345.            else if (fileVersion <= 7)
  1346. ***************
  1347. *** 435,440 ****
  1348.                     &curStyle, &curSize);
  1349.               curFontDPI = FONT_DPI_75;
  1350.            }
  1351. !          else
  1352.            {
  1353.               sscanf (s, "%d , %d , %d , %d , %d , %d , %d , %d , %d , \
  1354. --- 469,475 ----
  1355.                     &curStyle, &curSize);
  1356.               curFontDPI = FONT_DPI_75;
  1357. +             curDash = 0;
  1358.            }
  1359. !          else if (fileVersion <= 8)
  1360.            {
  1361.               sscanf (s, "%d , %d , %d , %d , %d , %d , %d , %d , %d , \
  1362. ***************
  1363. *** 444,451 ****
  1364.                     &lineStyle, &objFill, &penPat, &textJust, &curFont,
  1365.                     &curStyle, &curSize, &curFontDPI);
  1366.            }
  1367.            if (colorIndex >= maxColors)
  1368.            {
  1369. !             printf ("Can not find color '%s', use `%s' instead.\n", s,
  1370.                     colorMenuItems[defaultColorIndex]);
  1371.               colorIndex = defaultColorIndex;
  1372. --- 479,496 ----
  1373.                     &lineStyle, &objFill, &penPat, &textJust, &curFont,
  1374.                     &curStyle, &curSize, &curFontDPI);
  1375. +             curDash = 0;
  1376.            }
  1377. +          else
  1378. +          {
  1379. +             sscanf (s, "%d , %d , %d , %d , %d , %d , %d , %d , %d , \
  1380. +                   %d , %d , %d , %d , %d , %d , %d , %d , %d , %d",
  1381. +                   &drawOrigX, &drawOrigY, &zoomScale, &xyGrid, &gridOn,
  1382. +                   &colorIndex, &horiAlign, &vertAlign, &lineWidth, &curSpline,
  1383. +                   &lineStyle, &objFill, &penPat, &textJust, &curFont,
  1384. +                   &curStyle, &curSize, &curFontDPI, &curDash);
  1385. +          }
  1386.            if (colorIndex >= maxColors)
  1387.            {
  1388. !             printf ("Can not find color #%1d, use '%s' instead.\n", colorIndex,
  1389.                     colorMenuItems[defaultColorIndex]);
  1390.               colorIndex = defaultColorIndex;
  1391. ***************
  1392. *** 717,723 ****
  1393.      struct ObjRec    * obj_ptr;
  1394.      char         file_name[MAXPATHLENGTH], s[MAXPATHLENGTH];
  1395. !    char         full_name[MAXPATHLENGTH];
  1396.      FILE            * fp;
  1397.   
  1398.      if (SelectFileName ("Please select a file to OPEN ...",file_name) == INVALID)
  1399.         return;
  1400. --- 762,769 ----
  1401.      struct ObjRec    * obj_ptr;
  1402.      char         file_name[MAXPATHLENGTH], s[MAXPATHLENGTH];
  1403. !    char         full_name[MAXPATHLENGTH], saved_cur_dir[MAXPATHLENGTH];
  1404.      FILE            * fp;
  1405.   
  1406. +    strcpy (saved_cur_dir, curDir);
  1407.      if (SelectFileName ("Please select a file to OPEN ...",file_name) == INVALID)
  1408.         return;
  1409. ***************
  1410. *** 734,737 ****
  1411. --- 780,784 ----
  1412.      TieLooseEnds ();
  1413.      CleanUpDrawingWindow ();
  1414. +    SetFileModified (FALSE);
  1415.      sprintf (s, "Loading '%s' ...", file_name);
  1416.      Msg (s);
  1417. ***************
  1418. *** 759,763 ****
  1419.      curFileDefined = TRUE;
  1420.   
  1421. !    SetFileModified (FALSE);
  1422.      sprintf (s, "Current file is '%s'.", file_name);
  1423.      Msg (s);
  1424. --- 806,812 ----
  1425.      curFileDefined = TRUE;
  1426.   
  1427. !    if (strcmp (saved_cur_dir, curDir) != 0 && DirInSymPath ("."))
  1428. !       UpdateSymInfo ();
  1429.      sprintf (s, "Current file is '%s'.", file_name);
  1430.      Msg (s);
  1431. ***************
  1432. *** 778,781 ****
  1433. --- 827,831 ----
  1434.   
  1435.      fprintf (FP, "gsave\n");
  1436. +    fprintf (FP, "   0 setgray\n");
  1437.      fprintf (FP, "   [4 4] 0 setdash\n");
  1438.      fprintf (FP, "   newpath\n   %1d %1d moveto\n", ltx, lty);
  1439. ***************
  1440. *** 901,908 ****
  1441.      {
  1442.         if (PRTGIF)
  1443. !          printf ("Can not create $s, print aborted.", tmp_file);
  1444.         else
  1445.         {
  1446. !          sprintf (tmp_str, "Can not create %s, print aborted.", tmp_file);
  1447.            Msg (tmp_str);
  1448.         }
  1449. --- 951,958 ----
  1450.      {
  1451.         if (PRTGIF)
  1452. !          printf ("Can not create '%s', print aborted.", tmp_file);
  1453.         else
  1454.         {
  1455. !          sprintf (tmp_str, "Can not create '%s', print aborted.", tmp_file);
  1456.            Msg (tmp_str);
  1457.         }
  1458. ***************
  1459. *** 910,914 ****
  1460.      }
  1461.   
  1462. !    if (PRTGIF) printf ("Writing to %s ...\n", tmp_file);
  1463.   
  1464.      fprintf (fp, "%%!\n");
  1465. --- 960,964 ----
  1466.      }
  1467.   
  1468. !    if (PRTGIF) printf ("Writing to '%s' ...\n", tmp_file);
  1469.   
  1470.      fprintf (fp, "%%!\n");
  1471. ***************
  1472. *** 918,925 ****
  1473.      {
  1474.         if (PRTGIF)
  1475. !          printf ("Can not find %s, print aborted.\n", ps_file);
  1476.         else
  1477.         {
  1478. !          sprintf (message, "Can not find %s, print aborted.", ps_file);
  1479.            Msg (message);
  1480.         }
  1481. --- 968,975 ----
  1482.      {
  1483.         if (PRTGIF)
  1484. !          printf ("Can not find '%s', print aborted.\n", ps_file);
  1485.         else
  1486.         {
  1487. !          sprintf (message, "Can not find '%s', print aborted.", ps_file);
  1488.            Msg (message);
  1489.         }
  1490. ***************
  1491. *** 1010,1016 ****
  1492.               }
  1493.   
  1494. !             strcpy (ps_file, curDir);
  1495. !             strcat (ps_file, "/");
  1496. !             strcat (ps_file, curFileName);
  1497.               len = strlen (ps_file);
  1498.               for (i = len-1; ps_file[i] != '.'; i--) ;
  1499. --- 1060,1064 ----
  1500.               }
  1501.   
  1502. !             sprintf (ps_file, "%s/%s", curDir, curFileName);
  1503.               len = strlen (ps_file);
  1504.               for (i = len-1; ps_file[i] != '.'; i--) ;
  1505. ---------------------------------> cut here <---------------------------------
  1506. -- 
  1507. Bill Cheng // UCLA Computer Science Department // (213) 206-7135
  1508. 3277 Boelter Hall // Los Angeles, California 90024 // USA
  1509. william@CS.UCLA.EDU      ...!{uunet|ucbvax}!cs.ucla.edu!william
  1510.  
  1511. From news@CS.UCLA.EDU Mon Jan  7 18:37:41 1991
  1512. Received: from Shemp.CS.UCLA.EDU by uunet.UU.NET (5.61/1.14) with SMTP 
  1513.     id AA02610; Mon, 7 Jan 91 18:37:29 -0500
  1514. Received: by shemp.cs.ucla.edu
  1515.     (Sendmail 5.61a+YP/2.33) id AA04286;
  1516.     Mon, 7 Jan 91 15:37:15 -0800
  1517. Newsgroups: comp.sources.x
  1518. Path: oahu.cs.ucla.edu!william
  1519. From: william@CS.UCLA.EDU (William Cheng)
  1520. Subject: v07i056-076: tgif, Patch7 (tgif-1.16 => tgif-1.19), Part02/05
  1521. Message-Id: <1991Jan7.233701.4234@cs.ucla.edu>
  1522. Followup-To: william@cs.ucla.edu
  1523. Originator: william@oahu.cs.ucla.edu
  1524. Keywords: draw, tool, postscript, latex, hierarchical, x11, xlib, wysiwyg
  1525. Sender: news@cs.ucla.edu (Mr. News)
  1526. Nntp-Posting-Host: oahu.cs.ucla.edu
  1527. Organization: UCLA Computer Science Department
  1528. Date: Mon, 7 Jan 91 23:37:01 GMT
  1529. Patch-To: tgif: Volume 7, Issues 56-76
  1530. Apparently-To: comp-sources-x@uunet.uu.net
  1531. Status: O
  1532.  
  1533. ---------------------------------> cut here <---------------------------------
  1534. *** font.c.orig    Mon Jan  7 13:03:27 1991
  1535. --- font.c    Mon Jan  7 13:03:30 1991
  1536. ***************
  1537. *** 6,10 ****
  1538.   #ifndef lint
  1539.   static char RCSid[] =
  1540. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/font.c,v 1.11 90/10/27 15:45:24 william Exp $";
  1541.   #endif
  1542.   
  1543. --- 6,10 ----
  1544.   #ifndef lint
  1545.   static char RCSid[] =
  1546. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/font.c,v 1.13 90/11/03 12:30:45 william Exp $";
  1547.   #endif
  1548.   
  1549. ***************
  1550. *** 344,352 ****
  1551.      register int    dpi_index, font_index, size_index, style_index;
  1552.   {
  1553. - /* if (font_index == FONT_SYM) */
  1554. - /*    return (FIndex(font_index,size_index,0)); */
  1555. - /* else */
  1556. - /*    return (FIndex(font_index,size_index,style_index)); */
  1557.      if (font_index == FONT_SYM)
  1558.         return (size_index+MAXFONTSIZES*(MAXFONTSTYLES*font_index) +
  1559. --- 344,347 ----
  1560. ***************
  1561. *** 359,366 ****
  1562.   void SetCanvasFont ()
  1563.   {
  1564. !    register int    index;
  1565.   
  1566. !    canvasFontIndex = index = FontIndex (curFontDPI, curFont, curSize, curStyle);
  1567.      if (!myFontInfo[index].valid)
  1568.      {
  1569. --- 354,360 ----
  1570.   void SetCanvasFont ()
  1571.   {
  1572. !    register int    index, old_index;
  1573.   
  1574. !    index = FontIndex (curFontDPI, curFont, curSize, curStyle);
  1575.      if (!myFontInfo[index].valid)
  1576.      {
  1577. ***************
  1578. *** 368,372 ****
  1579.               XLoadQueryFont (mainDisplay, fontNameStr[index])) == NULL)
  1580.         {
  1581. !          printf ("Can not open %s.  Abort.\n\n", fontNameStr[index]); exit (-1);
  1582.         }
  1583.         myFontInfo[index].valid = TRUE;
  1584. --- 362,378 ----
  1585.               XLoadQueryFont (mainDisplay, fontNameStr[index])) == NULL)
  1586.         {
  1587. !          old_index = index;
  1588. !          curFontDPI = (curFontDPI==FONT_DPI_75) ? FONT_DPI_100 : FONT_DPI_75;
  1589. !          index = FontIndex (curFontDPI, curFont, curSize, curStyle);
  1590. !          if ((myFontInfo[index].xfs =
  1591. !                XLoadQueryFont (mainDisplay, fontNameStr[index])) == NULL)
  1592. !          {
  1593. !             printf ("Can not open '%s' nor\n\t'%s'!  Tgif aborted!\n\n",
  1594. !                   fontNameStr[old_index], fontNameStr[index]);
  1595. !             exit (-1);
  1596. !          }
  1597. !          printf ("Warning:  can not open '%s' font,\n\tuse '%s' instead.\n",
  1598. !                fontNameStr[old_index], fontNameStr[index]);
  1599. !          SetFileModified (TRUE);
  1600.         }
  1601.         myFontInfo[index].valid = TRUE;
  1602. ***************
  1603. *** 373,376 ****
  1604. --- 379,384 ----
  1605.      }
  1606.   
  1607. +    canvasFontIndex = index;
  1608.      canvasFontPtr = myFontInfo[index].xfs;
  1609.      canvasFontAsc = canvasFontPtr->max_bounds.ascent;
  1610. ***************
  1611. *** 390,409 ****
  1612.      register int    i;
  1613.      int        ruler_index, default_index;
  1614.   
  1615. -    pointSize = (curFontDPI==FONT_DPI_75) ? pointSize75 : pointSize100;
  1616. -    sizeMenuStr = (curFontDPI==FONT_DPI_75) ? sizeMenuStr75 : sizeMenuStr100;
  1617.      for (i = 0; i < FONTTABLESIZE; i++) myFontInfo[i].valid = FALSE;
  1618.   
  1619. !    default_index = COUR18R_75;
  1620.      if ((myFontInfo[default_index].xfs =
  1621.            XLoadQueryFont (mainDisplay, fontNameStr[default_index])) == NULL)
  1622.      {
  1623. !       default_index = COUR17R_100;
  1624.         if ((myFontInfo[default_index].xfs =
  1625.               XLoadQueryFont (mainDisplay, fontNameStr[default_index])) == NULL)
  1626.         {
  1627. !          printf ("Can not open %s or %s.  Abort.\n\n",
  1628. !                fontNameStr[COUR18R_75], fontNameStr[COUR17R_100]);
  1629.            exit (-1);
  1630.         }
  1631. --- 398,423 ----
  1632.      register int    i;
  1633.      int        ruler_index, default_index;
  1634. +    int        old_ruler_index, old_default_index;
  1635.   
  1636.      for (i = 0; i < FONTTABLESIZE; i++) myFontInfo[i].valid = FALSE;
  1637.   
  1638. !    curFont = FONT_COU;
  1639. !    curStyle = STYLE_NR;
  1640. !    curSize = 4;
  1641. !    curFontDPI = FONT_DPI_75;
  1642. !    default_index = FontIndex(curFontDPI, curFont, curSize, curStyle);
  1643.      if ((myFontInfo[default_index].xfs =
  1644.            XLoadQueryFont (mainDisplay, fontNameStr[default_index])) == NULL)
  1645.      {
  1646. !       old_default_index = default_index;
  1647. !       curSize = 2;
  1648. !       curFontDPI = FONT_DPI_100;
  1649. !       default_index = FontIndex(curFontDPI, curFont, curSize, curStyle);
  1650.         if ((myFontInfo[default_index].xfs =
  1651.               XLoadQueryFont (mainDisplay, fontNameStr[default_index])) == NULL)
  1652.         {
  1653. !          printf ("Can not open '%s' nor\n\t'%s'!  Tgif aborted!\n\n",
  1654. !                fontNameStr[old_default_index], fontNameStr[default_index]);
  1655.            exit (-1);
  1656.         }
  1657. ***************
  1658. *** 411,436 ****
  1659.      myFontInfo[default_index].valid = TRUE;
  1660.   
  1661. !    if (default_index == COUR18R_75)
  1662.      {
  1663. !       ruler_index = COUR10R_75;
  1664.         if ((myFontInfo[ruler_index].xfs =
  1665.               XLoadQueryFont (mainDisplay, fontNameStr[ruler_index])) == NULL)
  1666.         {
  1667. !          printf ("Can not open %s.  Abort.\n\n", fontNameStr[ruler_index]);
  1668.            exit (-1);
  1669.         }
  1670. -       curFontDPI = FONT_DPI_75;
  1671.      }
  1672. -    else
  1673. -    {
  1674. -       ruler_index = COUR11R_100;
  1675. -       if ((myFontInfo[ruler_index].xfs =
  1676. -             XLoadQueryFont (mainDisplay, fontNameStr[ruler_index])) == NULL)
  1677. -       {
  1678. -          printf ("Can not open %s.  Abort.\n\n", fontNameStr[ruler_index]);
  1679. -          exit (-1);
  1680. -       }
  1681. -       curFontDPI = FONT_DPI_100;
  1682. -    }
  1683.      myFontInfo[ruler_index].valid = TRUE;
  1684.   
  1685. --- 425,442 ----
  1686.      myFontInfo[default_index].valid = TRUE;
  1687.   
  1688. !    ruler_index = FontIndex(FONT_DPI_75, curFont, 1, curStyle);
  1689. !    if ((myFontInfo[ruler_index].xfs =
  1690. !          XLoadQueryFont (mainDisplay, fontNameStr[ruler_index])) == NULL)
  1691.      {
  1692. !       old_ruler_index = ruler_index;
  1693. !       ruler_index = FontIndex(FONT_DPI_100, curFont, 0, curStyle);
  1694.         if ((myFontInfo[ruler_index].xfs =
  1695.               XLoadQueryFont (mainDisplay, fontNameStr[ruler_index])) == NULL)
  1696.         {
  1697. !          printf ("Can not open '%s' nor\n\t'%s'!  Tgif aborted!\n\n",
  1698. !                fontNameStr[old_ruler_index], fontNameStr[ruler_index]);
  1699.            exit (-1);
  1700.         }
  1701.      }
  1702.      myFontInfo[ruler_index].valid = TRUE;
  1703.   
  1704. ***************
  1705. *** 446,449 ****
  1706. --- 452,458 ----
  1707.      rulerFontDes = rulerFontPtr->max_bounds.descent;
  1708.      rulerFontHeight = rulerFontAsc + rulerFontDes;
  1709. +    pointSize = (curFontDPI==FONT_DPI_75) ? pointSize75 : pointSize100;
  1710. +    sizeMenuStr = (curFontDPI==FONT_DPI_75) ? sizeMenuStr75 : sizeMenuStr100;
  1711.   }
  1712.   
  1713. *** grid.c.orig    Mon Jan  7 13:03:37 1991
  1714. --- grid.c    Mon Jan  7 13:03:39 1991
  1715. ***************
  1716. *** 6,10 ****
  1717.   #ifndef lint
  1718.   static char RCSid[] =
  1719. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/grid.c,v 1.7 90/08/20 13:56:57 william Exp $";
  1720.   #endif
  1721.   
  1722. --- 6,10 ----
  1723.   #ifndef lint
  1724.   static char RCSid[] =
  1725. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/grid.c,v 1.8 90/11/01 08:42:51 william Exp $";
  1726.   #endif
  1727.   
  1728. ***************
  1729. *** 167,172 ****
  1730.   #define LAYOUT_SLIDELAND 10
  1731.   #define LAYOUT_SLIDEPORT 11
  1732. ! #define LAYOUT_TO_LPR 12
  1733. ! #define LAYOUT_TO_TEXFIG 13
  1734.   
  1735.   #define MAXLAYOUTMENUS 14
  1736. --- 167,172 ----
  1737.   #define LAYOUT_SLIDELAND 10
  1738.   #define LAYOUT_SLIDEPORT 11
  1739. ! #define LAYOUT_TOGGLE_WHERE_TO_PRINT 12
  1740. ! #define LAYOUT_TOGGLE_COLOR_PS 13
  1741.   
  1742.   #define MAXLAYOUTMENUS 14
  1743. ***************
  1744. *** 186,197 ****
  1745.      "SlidePort",
  1746.      "Printer",
  1747. !    "LaTeX-Figure"
  1748.   };
  1749.   #define MAX_LAYOUT_STR 13 /* longest string length in layoutMenuStr[] */
  1750.   
  1751. ! static char showGridStr[] = "ShowGrid  #G";
  1752. ! static char hideGridStr[] = "HideGrid  #G";
  1753. ! static char snapOnStr[]   = "SnapOn   ^#G";
  1754. ! static char snapOffStr[]  = "SnapOff  ^#G";
  1755.   
  1756.   void IncGrid ()
  1757. --- 186,201 ----
  1758.      "SlidePort",
  1759.      "Printer",
  1760. !    "ColorPS"
  1761.   };
  1762.   #define MAX_LAYOUT_STR 13 /* longest string length in layoutMenuStr[] */
  1763.   
  1764. ! static char showGridStr[]         = "ShowGrid  #G";
  1765. ! static char hideGridStr[]         = "HideGrid  #G";
  1766. ! static char snapOnStr[]           = "SnapOn   ^#G";
  1767. ! static char snapOffStr[]          = "SnapOff  ^#G";
  1768. ! static char printerStr[]          = "Printer  ^#X";
  1769. ! static char latexFigStr[]         = "LaTeXFig ^#X";
  1770. ! static char bwPostScriptStr[]     = "BlkWhtPS ^#K";
  1771. ! static char colorPostScriptStr[]  = "ColorPS  ^#K";
  1772.   
  1773.   void IncGrid ()
  1774. ***************
  1775. *** 237,240 ****
  1776. --- 241,265 ----
  1777.   }
  1778.   
  1779. + void ToggleColorPostScript ()
  1780. + {
  1781. +    colorDump = !colorDump;
  1782. +    if (colorDump)
  1783. +       Msg ("PostScript file will print in color.");
  1784. +    else
  1785. +       Msg ("PostScript file will print in black-and-white.");
  1786. +    ShowWhereToPrint ();
  1787. + }
  1788. + void ToggleWhereToPrint ()
  1789. + {
  1790. +    whereToPrint = !whereToPrint;
  1791. +    switch (whereToPrint)
  1792. +    {
  1793. +       case PRINTER: Msg ("Print device set to printer."); break;
  1794. +       case LATEX_FIG: Msg ("Print device set to LaTeX-Figure file."); break;
  1795. +    }
  1796. +    ShowWhereToPrint ();
  1797. + }
  1798.   void ZoomIn ()
  1799.   {
  1800. ***************
  1801. *** 454,457 ****
  1802. --- 479,490 ----
  1803.      else
  1804.         strcpy (menu_strings[LAYOUT_SNAP], snapOnStr);
  1805. +    if (whereToPrint == PRINTER)
  1806. +       strcpy (menu_strings[LAYOUT_TOGGLE_WHERE_TO_PRINT], latexFigStr);
  1807. +    else
  1808. +       strcpy (menu_strings[LAYOUT_TOGGLE_WHERE_TO_PRINT], printerStr);
  1809. +    if (colorDump)
  1810. +       strcpy (menu_strings[LAYOUT_TOGGLE_COLOR_PS], bwPostScriptStr);
  1811. +    else
  1812. +       strcpy (menu_strings[LAYOUT_TOGGLE_COLOR_PS], colorPostScriptStr);
  1813.   
  1814.      DefaultColorArrays (MAXLAYOUTMENUS, &fore_colors, &valid);
  1815. ***************
  1816. *** 547,566 ****
  1817.            }
  1818.            break;
  1819. !       case LAYOUT_TO_LPR:
  1820. !          if (whereToPrint != PRINTER)
  1821. !          {
  1822. !             whereToPrint = PRINTER;
  1823. !             ShowWhereToPrint ();
  1824. !             Msg ("Print device set to printer.");
  1825. !          }
  1826. !          break;
  1827. !       case LAYOUT_TO_TEXFIG:
  1828. !          if (whereToPrint != LATEX_FIG)
  1829. !          {
  1830. !             whereToPrint = LATEX_FIG;
  1831. !             ShowWhereToPrint ();
  1832. !             Msg ("Print device set to LaTeX-Figure file.");
  1833. !          }
  1834. !          break;
  1835.      }
  1836.   }
  1837. --- 580,585 ----
  1838.            }
  1839.            break;
  1840. !       case LAYOUT_TOGGLE_WHERE_TO_PRINT: ToggleWhereToPrint (); break;
  1841. !       case LAYOUT_TOGGLE_COLOR_PS: ToggleColorPostScript (); break;
  1842.      }
  1843.   }
  1844. *** mainloop.c.orig    Mon Jan  7 13:03:46 1991
  1845. --- mainloop.c    Mon Jan  7 13:03:48 1991
  1846. ***************
  1847. *** 6,10 ****
  1848.   #ifndef lint
  1849.   static char RCSid[] =
  1850. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/mainloop.c,v 1.20 90/10/25 15:02:22 william Exp $";
  1851.   #endif
  1852.   
  1853. --- 6,10 ----
  1854.   #ifndef lint
  1855.   static char RCSid[] =
  1856. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/mainloop.c,v 1.22 90/11/03 12:42:48 william Exp $";
  1857.   #endif
  1858.   
  1859. ***************
  1860. *** 51,58 ****
  1861.      char    s[255];
  1862.   
  1863. !    strcpy (s, "xterm -bd red -e ");
  1864. !    strcat (s, CmdName);
  1865. !    strcat (s, " ");
  1866. !    strcat (s, FileName);
  1867.      pid = fork ();
  1868.      if (pid == 0)
  1869. --- 51,55 ----
  1870.      char    s[255];
  1871.   
  1872. !    sprintf (s, "xterm -bd red -e %s %s", CmdName, FileName);
  1873.      pid = fork ();
  1874.      if (pid == 0)
  1875. ***************
  1876. *** 152,156 ****
  1877.      char            * c_ptr, file_name[MAXPATHLENGTH], s[MAXPATHLENGTH];
  1878.      char            full_name[MAXPATHLENGTH];
  1879. !    int            shorthand_rc, draw_rc;
  1880.      struct ObjRec    * obj_ptr;
  1881.      FILE            * fp;
  1882. --- 149,153 ----
  1883.      char            * c_ptr, file_name[MAXPATHLENGTH], s[MAXPATHLENGTH];
  1884.      char            full_name[MAXPATHLENGTH];
  1885. !    int            shorthand_rc, draw_rc, len;
  1886.      struct ObjRec    * obj_ptr;
  1887.      FILE            * fp;
  1888. ***************
  1889. *** 184,191 ****
  1890.         if (FileName[0] != '\0')
  1891.         {
  1892. !          sprintf (file_name, "%s.obj", FileName);
  1893.            if ((fp = fopen (file_name, "r")) == NULL)
  1894.            {
  1895. !             sprintf (s, "CAN NOT OPEN %s.", file_name);
  1896.               Msg (s);
  1897.            }
  1898. --- 181,193 ----
  1899.         if (FileName[0] != '\0')
  1900.         {
  1901. !          len = strlen (FileName);
  1902. !          if (len >= 4 && strcmp (&FileName[len-4], ".obj") == 0)
  1903. !             strcpy (file_name, FileName);
  1904. !          else
  1905. !             sprintf (file_name, "%s.obj", FileName);
  1906.            if ((fp = fopen (file_name, "r")) == NULL)
  1907.            {
  1908. !             sprintf (s, "Can not open '%s'.", file_name);
  1909.               Msg (s);
  1910.            }
  1911. ***************
  1912. *** 204,212 ****
  1913.                  strcat (full_name, file_name);
  1914.               else
  1915. !             {
  1916. !                strcpy (full_name, curDir);
  1917. !                strcat (full_name, "/");
  1918. !                strcat (full_name, file_name);
  1919. !             }
  1920.               SetCurDir (full_name);
  1921.               *curSymDir = '\0';
  1922. --- 206,211 ----
  1923.                  strcat (full_name, file_name);
  1924.               else
  1925. !                sprintf (full_name, "%s/%s", curDir, file_name);
  1926.               SetCurDir (full_name);
  1927.               *curSymDir = '\0';
  1928. ***************
  1929. *** 556,563 ****
  1930.            MyFormat(attr_ptr->s);
  1931.            if (attr_ptr->nameshown)
  1932. !          {
  1933. !             strcpy (s, attr_ptr->name);
  1934. !             strcat (s, attr_ptr->s);
  1935. !          }
  1936.            else
  1937.               strcpy (s, attr_ptr->s);
  1938. --- 555,559 ----
  1939.            MyFormat(attr_ptr->s);
  1940.            if (attr_ptr->nameshown)
  1941. !             sprintf (s, "%s%s", attr_ptr->name, attr_ptr->s);
  1942.            else
  1943.               strcpy (s, attr_ptr->s);
  1944. *** menu.c.orig    Mon Jan  7 13:03:54 1991
  1945. --- menu.c    Mon Jan  7 13:03:56 1991
  1946. ***************
  1947. *** 6,10 ****
  1948.   #ifndef lint
  1949.   static char RCSid[] =
  1950. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/menu.c,v 1.14 90/10/25 14:58:18 william Exp $";
  1951.   #endif
  1952.   
  1953. --- 6,10 ----
  1954.   #ifndef lint
  1955.   static char RCSid[] =
  1956. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/menu.c,v 1.15 90/11/01 13:21:34 william Exp $";
  1957.   #endif
  1958.   
  1959. ***************
  1960. *** 42,46 ****
  1961.   
  1962.   static int    savedZoomScale = 0, savedDrawOrigX = 0, savedDrawOrigY = 0;
  1963. ! static int    savedDrawWinW = 0, savedDrawWinH = 0;
  1964.   
  1965.   static GC    textMenuGC;
  1966. --- 42,46 ----
  1967.   
  1968.   static int    savedZoomScale = 0, savedDrawOrigX = 0, savedDrawOrigY = 0;
  1969. ! static int    savedDrawWinW = 0, savedDrawWinH = 0, savedFileModified = FALSE;
  1970.   
  1971.   static GC    textMenuGC;
  1972. ***************
  1973. *** 627,630 ****
  1974. --- 627,631 ----
  1975.      savedDrawWinW = drawWinW;
  1976.      savedDrawWinH = drawWinH;
  1977. +    savedFileModified = fileModified;
  1978.   }
  1979.   
  1980. ***************
  1981. *** 641,644 ****
  1982. --- 642,646 ----
  1983.      drawWinW = savedDrawWinW;
  1984.      drawWinH = savedDrawWinH;
  1985. +    fileModified = savedFileModified;
  1986.      UpdDrawWinBBox ();
  1987.      XMapWindow (mainDisplay, mainWindow);
  1988. *** move.c.orig    Mon Jan  7 13:04:04 1991
  1989. --- move.c    Mon Jan  7 13:04:07 1991
  1990. ***************
  1991. *** 7,11 ****
  1992.   #ifndef lint
  1993.   static char RCSid[] =
  1994. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/move.c,v 1.7 90/08/11 00:14:18 william Exp $";
  1995.   #endif
  1996.   #include <stdio.h>
  1997. --- 7,11 ----
  1998.   #ifndef lint
  1999.   static char RCSid[] =
  2000. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/move.c,v 1.9 90/10/31 11:38:53 william Exp $";
  2001.   #endif
  2002.   #include <stdio.h>
  2003. ***************
  2004. *** 207,211 ****
  2005.               case OBJ_BOX:
  2006.               case OBJ_TEXT:
  2007. !                SelBox (drawWindow, revDefaultGC, ltx+dx, lty+dy, rbx+dx, rby+dy);
  2008.                  break;
  2009.               case OBJ_OVAL:
  2010. --- 207,212 ----
  2011.               case OBJ_BOX:
  2012.               case OBJ_TEXT:
  2013. !                SelBox (drawWindow, revDefaultGC,
  2014. !                      ltx+dx, lty+dy, rbx+dx, rby+dy);
  2015.                  break;
  2016.               case OBJ_OVAL:
  2017. *** names.c.orig    Mon Jan  7 13:04:52 1991
  2018. --- names.c    Mon Jan  7 13:05:02 1991
  2019. ***************
  2020. *** 6,10 ****
  2021.   #ifndef lint
  2022.   static char RCSid[] =
  2023. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/names.c,v 1.10 90/10/26 15:40:34 william Exp $";
  2024.   #endif
  2025.   
  2026. --- 6,10 ----
  2027.   #ifndef lint
  2028.   static char RCSid[] =
  2029. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/names.c,v 1.18 90/11/09 15:06:52 william Exp $";
  2030.   #endif
  2031.   
  2032. ***************
  2033. *** 144,147 ****
  2034. --- 144,149 ----
  2035.      {
  2036.         strcpy (path, symPath[path_index]);
  2037. +       if (strcmp (".", path) == 0) strcpy (path, curDir);
  2038.         if ((dirp = opendir (path)) == NULL)
  2039.            continue;
  2040. ***************
  2041. *** 224,228 ****
  2042.         cfree (dsp_ptr);
  2043.      }
  2044. !    symbolList[numSymbols].next = NULL;
  2045.      topOfSymLinkList = NULL;
  2046.   }
  2047. --- 226,230 ----
  2048.         cfree (dsp_ptr);
  2049.      }
  2050. !    symbolList[numSymbols-1].next = NULL;
  2051.      topOfSymLinkList = NULL;
  2052.   }
  2053. ***************
  2054. *** 267,272 ****
  2055.         else
  2056.         {
  2057. !          strcpy (s, path);
  2058. !          strcat (s, d->d_name);
  2059.            stat (s, &stat_buf);
  2060.            if (stat_buf.st_mode & S_IFDIR)
  2061. --- 269,273 ----
  2062.         else
  2063.         {
  2064. !          sprintf (s, "%s%s", path, d->d_name);
  2065.            stat (s, &stat_buf);
  2066.            if (stat_buf.st_mode & S_IFDIR)
  2067. ***************
  2068. *** 330,334 ****
  2069.            cfree (dsp_ptr);
  2070.         }
  2071. !       dirList[numDirEntries].next = NULL;
  2072.         topOfDirLinkList = NULL;
  2073.      }
  2074. --- 331,335 ----
  2075.            cfree (dsp_ptr);
  2076.         }
  2077. !       dirList[numDirEntries-1].next = NULL;
  2078.         topOfDirLinkList = NULL;
  2079.      }
  2080. ***************
  2081. *** 799,804 ****
  2082.         nameMarked = 0;
  2083.   
  2084. !       strcpy (full_name, dir_name);
  2085. !       strcat (full_name, "/");
  2086.         name[0] = '\0';
  2087.         name_index = 0;
  2088. --- 800,804 ----
  2089.         nameMarked = 0;
  2090.   
  2091. !       sprintf (full_name, "%s/", dir_name);
  2092.         name[0] = '\0';
  2093.         name_index = 0;
  2094. ***************
  2095. *** 838,842 ****
  2096.               }
  2097.   
  2098. ! /*          if (!grabbed)
  2099.               {
  2100.                  XGrabKeyboard (mainDisplay, nameBaseWin, False,
  2101. --- 838,842 ----
  2102.               }
  2103.   
  2104. !             if (!grabbed)
  2105.               {
  2106.                  XGrabKeyboard (mainDisplay, nameBaseWin, False,
  2107. ***************
  2108. *** 843,847 ****
  2109.                        GrabModeAsync, GrabModeAsync, CurrentTime);
  2110.                  grabbed = TRUE;
  2111. !             } */
  2112.   
  2113.               continue;
  2114. --- 843,847 ----
  2115.                        GrabModeAsync, GrabModeAsync, CurrentTime);
  2116.                  grabbed = TRUE;
  2117. !             }
  2118.   
  2119.               continue;
  2120. ***************
  2121. *** 869,875 ****
  2122.                  {
  2123.                     name[--name_index] = '\0';
  2124. !                   strcpy (full_name, dir_name);
  2125. !                   strcat (full_name, "/");
  2126. !                   strcat (full_name, name);
  2127.                     for (i = 0; i < nameEntries; i++)
  2128.                        if (strncmp (nameDspPtr[i], name, name_index) == 0)
  2129. --- 869,873 ----
  2130.                  {
  2131.                     name[--name_index] = '\0';
  2132. !                   sprintf (full_name, "%s/%s", dir_name, name);
  2133.                     for (i = 0; i < nameEntries; i++)
  2134.                        if (strncmp (nameDspPtr[i], name, name_index) == 0)
  2135. ***************
  2136. *** 913,934 ****
  2137.                  if (i < nameEntries)
  2138.                  {
  2139. !                   if (i < nameFirst)
  2140. !                      nameFirst = i;
  2141. !                   else if (i >= nameFirst+ITEM_DSPED)
  2142.                     {
  2143. !                      if (i < nameEntries-ITEM_DSPED)
  2144. !                         nameFirst = i;
  2145. !                      else
  2146. !                         nameFirst = nameEntries-ITEM_DSPED;
  2147.                     }
  2148. !                   nameMarked = i;
  2149.   
  2150. !                   strcpy (full_name, dir_name);
  2151. !                   strcat (full_name, "/");
  2152. !                   strcat (full_name, name);
  2153. !                   RedrawNamePath (full_name, graph_start,
  2154. !                         3*ROW_HEIGHT+defaultFontAsc+2);
  2155. !                   RedrawNameScrollWin ();
  2156. !                   RedrawDspWindow ();
  2157.                  }
  2158.                  else
  2159. --- 911,938 ----
  2160.                  if (i < nameEntries)
  2161.                  {
  2162. !                   if (buf[0] == '/')
  2163.                     {
  2164. !                      changing = FALSE;
  2165. !                      index = nameMarked = i;
  2166.                     }
  2167. !                   else
  2168. !                   {
  2169. !                      if (i < nameFirst)
  2170. !                         nameFirst = i;
  2171. !                      else if (i >= nameFirst+ITEM_DSPED)
  2172. !                      {
  2173. !                         if (i < nameEntries-ITEM_DSPED)
  2174. !                            nameFirst = i;
  2175. !                         else
  2176. !                            nameFirst = nameEntries-ITEM_DSPED;
  2177. !                      }
  2178. !                      nameMarked = i;
  2179.   
  2180. !                      sprintf (full_name, "%s/%s", dir_name, name);
  2181. !                      RedrawNamePath (full_name, graph_start,
  2182. !                            3*ROW_HEIGHT+defaultFontAsc+2);
  2183. !                      RedrawNameScrollWin ();
  2184. !                      RedrawDspWindow ();
  2185. !                   }
  2186.                  }
  2187.                  else
  2188. ***************
  2189. *** 965,971 ****
  2190.                  {
  2191.                     strcpy (name, nameDspPtr[nameMarked]);
  2192. !                   strcpy (full_name, dir_name);
  2193. !                   strcat (full_name, "/");
  2194. !                   strcat (full_name, name);
  2195.                     RedrawNamePath (full_name, graph_start,
  2196.                           3*ROW_HEIGHT+defaultFontAsc+2);
  2197. --- 969,973 ----
  2198.                  {
  2199.                     strcpy (name, nameDspPtr[nameMarked]);
  2200. !                   sprintf (full_name, "%s/%s", dir_name, name);
  2201.                     RedrawNamePath (full_name, graph_start,
  2202.                           3*ROW_HEIGHT+defaultFontAsc+2);
  2203. ***************
  2204. *** 1016,1022 ****
  2205.      if (grabbed) XUngrabKeyboard (mainDisplay, CurrentTime);
  2206.   
  2207. !    strcpy (SelStr, dir_name);
  2208. !    strcat (SelStr, "/");
  2209. !    strcat (SelStr, sel_str);
  2210.   
  2211.      if (index == INVALID)
  2212. --- 1018,1022 ----
  2213.      if (grabbed) XUngrabKeyboard (mainDisplay, CurrentTime);
  2214.   
  2215. !    sprintf (SelStr, "%s/%s", dir_name, sel_str);
  2216.   
  2217.      if (index == INVALID)
  2218. ***************
  2219. *** 1130,1134 ****
  2220.               RedrawDspWindow ();
  2221.   
  2222. ! /*       if (!grabbed)
  2223.            {
  2224.               XGrabKeyboard (mainDisplay, nameBaseWin, False,
  2225. --- 1130,1134 ----
  2226.               RedrawDspWindow ();
  2227.   
  2228. !          if (!grabbed)
  2229.            {
  2230.               XGrabKeyboard (mainDisplay, nameBaseWin, False,
  2231. ***************
  2232. *** 1135,1139 ****
  2233.                     GrabModeAsync, GrabModeAsync, CurrentTime);
  2234.               grabbed = TRUE;
  2235. !          } */
  2236.   
  2237.            continue;
  2238. --- 1135,1139 ----
  2239.                     GrabModeAsync, GrabModeAsync, CurrentTime);
  2240.               grabbed = TRUE;
  2241. !          }
  2242.   
  2243.            continue;
  2244. ***************
  2245. *** 1308,1320 ****
  2246.      Msg (s);
  2247.   
  2248. - /* if ((topOfSymLinkList = SymbolListing ()) == NULL) */
  2249. - /* { */
  2250. - /*    Msg ("No symbol found!"); */
  2251. - /*    SelSymName[0] = '\0'; */
  2252. - /*    PathName[0] = '\0'; */
  2253. - /*    return (INVALID); */
  2254. - /* } */
  2255. - /* BuildSymbolList (); */
  2256.      nameEntries = numSymbols;
  2257.      nameDspPtr = MakeNameDspItemArray (nameEntries, symbolList);
  2258. --- 1308,1311 ----
  2259. ***************
  2260. *** 1355,1358 ****
  2261. --- 1346,1373 ----
  2262.   }
  2263.   
  2264. + int NameInCurDir (FileName)
  2265. +    char    * FileName;
  2266. + {
  2267. +    register int    i;
  2268. +    for (i = 0; i < numDirEntries; i++)
  2269. +       if (dirList[i].directory && strcmp (FileName, dirList[i].itemstr) == 0)
  2270. +          return (TRUE);
  2271. +    return (FALSE);
  2272. + }
  2273. + int DirInSymPath (DirName)
  2274. +    char    * DirName;
  2275. + {
  2276. +    register int    i;
  2277. +    for (i = 0; i < symPathNumEntries; i++)
  2278. +       if (strcmp (DirName, symPath[i]) == 0)
  2279. +          return (TRUE);
  2280. +    return (FALSE);
  2281. + }
  2282.   static
  2283.   DspList * DomainListing (Entries)
  2284. ***************
  2285. *** 1447,1454 ****
  2286.      char        file_name[MAXPATHLENGTH];
  2287.   
  2288. !    if (*FileName != '/')
  2289. !       strcpy (file_name, bootDir);
  2290. !    else
  2291. !       strcpy (file_name, FileName);
  2292.   
  2293.      for (i = strlen(file_name)-1; i>=0 && file_name[i]!='/'; i--) ;
  2294. --- 1462,1466 ----
  2295.      char        file_name[MAXPATHLENGTH];
  2296.   
  2297. !    strcpy (file_name, FileName);
  2298.   
  2299.      for (i = strlen(file_name)-1; i>=0 && file_name[i]!='/'; i--) ;
  2300. ***************
  2301. *** 1455,1460 ****
  2302.   
  2303.      if (i < 0)
  2304.         TwoLineMsg ("Error:  No '/' found in SetCurDir ().",
  2305. !                   "        curDir and curFileName not set.");
  2306.      else
  2307.      {
  2308. --- 1467,1476 ----
  2309.   
  2310.      if (i < 0)
  2311. +    {
  2312.         TwoLineMsg ("Error:  No '/' found in SetCurDir ().",
  2313. !                   "        curDir set to '.'.");
  2314. !       strcpy (curDir, ".");
  2315. !       strcpy (curFileName, FileName);
  2316. !    }
  2317.      else
  2318.      {
  2319. *** oval.c.orig    Mon Jan  7 13:05:13 1991
  2320. --- oval.c    Mon Jan  7 13:05:15 1991
  2321. ***************
  2322. *** 6,10 ****
  2323.   #ifndef lint
  2324.   static char RCSid[] =
  2325. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/oval.c,v 1.8 90/10/27 15:10:00 william Exp $";
  2326.   #endif
  2327.   
  2328. --- 6,10 ----
  2329.   #ifndef lint
  2330.   static char RCSid[] =
  2331. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/oval.c,v 1.11 90/11/10 13:51:00 william Exp $";
  2332.   #endif
  2333.   
  2334. ***************
  2335. *** 93,97 ****
  2336.      struct ObjRec    * ObjPtr;
  2337.   {
  2338. !    int            ltx, lty, rbx, rby, xc, yc, a, b, fill, width, pen;
  2339.   
  2340.      ltx = ObjPtr->obbox.ltx; lty = ObjPtr->obbox.lty;
  2341. --- 93,98 ----
  2342.      struct ObjRec    * ObjPtr;
  2343.   {
  2344. !    int    ltx, lty, rbx, rby, xc, yc, a, b, i;
  2345. !    int    fill, width, pen, dash, color_index;
  2346.   
  2347.      ltx = ObjPtr->obbox.ltx; lty = ObjPtr->obbox.lty;
  2348. ***************
  2349. *** 103,109 ****
  2350. --- 104,120 ----
  2351.      width = ObjPtr->detail.o->width;
  2352.      pen = ObjPtr->detail.o->pen;
  2353. +    dash = ObjPtr->detail.o->dash;
  2354.   
  2355.      if (fill == NONEPAT && pen == NONEPAT) return;
  2356.   
  2357. +    if (colorDump)
  2358. +    {
  2359. +       color_index = ObjPtr->color;
  2360. +       fprintf (FP, "%.3f %.3f %.3f setrgbcolor\n",
  2361. +             ((float)tgifColors[color_index].red/maxRGB),
  2362. +             ((float)tgifColors[color_index].green/maxRGB),
  2363. +             ((float)tgifColors[color_index].blue/maxRGB));
  2364. +    }
  2365.      switch (fill)
  2366.      {
  2367. ***************
  2368. *** 128,131 ****
  2369. --- 139,150 ----
  2370.   
  2371.      fprintf (FP, "%1d setlinewidth\n", widthOfLine[width]);
  2372. +    if (dash != 0)
  2373. +    {
  2374. +       fprintf (FP, "[");
  2375. +       for (i = 0; i < dashListLength[dash]-1; i++)
  2376. +          fprintf (FP, "%1d ", (int)(dashList[dash][i]));
  2377. +       fprintf (FP, "%1d] 0 setdash\n",
  2378. +             (int)(dashList[dash][dashListLength[dash]-1]));
  2379. +    }
  2380.   
  2381.      switch (pen)
  2382. ***************
  2383. *** 147,150 ****
  2384. --- 166,170 ----
  2385.            break;
  2386.      }
  2387. +    if (dash != 0) fprintf (FP, "[] 0 setdash\n");
  2388.      fprintf (FP, "1 setlinewidth\n\n");
  2389.   }
  2390. ***************
  2391. *** 156,160 ****
  2392.   {
  2393.      struct OvalRec    * oval_ptr = ObjPtr->detail.o;
  2394. !    int            fill, width, pen, pixel, real_x_off, real_y_off;
  2395.      char            s[80];
  2396.      struct BBRec        bbox;
  2397. --- 176,180 ----
  2398.   {
  2399.      struct OvalRec    * oval_ptr = ObjPtr->detail.o;
  2400. !    int            fill, width, pen, dash, pixel, real_x_off, real_y_off;
  2401.      char            s[80];
  2402.      struct BBRec        bbox;
  2403. ***************
  2404. *** 171,174 ****
  2405. --- 191,195 ----
  2406.      width = ObjPtr->detail.o->width;
  2407.      pen = ObjPtr->detail.o->pen;
  2408. +    dash = ObjPtr->detail.o->dash;
  2409.      pixel = colorPixels[ObjPtr->color];
  2410.   
  2411. ***************
  2412. *** 191,197 ****
  2413.         values.stipple = patPixmap[pen];
  2414.         values.line_width = widthOfLine[width] >> zoomScale;
  2415.         XChangeGC (mainDisplay, drawGC,
  2416. !             GCForeground | GCFunction | GCFillStyle | GCStipple | GCLineWidth,
  2417. !             &values);
  2418.         XDrawArc (mainDisplay, window, drawGC, bbox.ltx, bbox.lty,
  2419.               bbox.rbx-bbox.ltx, bbox.rby-bbox.lty, 0, 360*64);
  2420. --- 212,226 ----
  2421.         values.stipple = patPixmap[pen];
  2422.         values.line_width = widthOfLine[width] >> zoomScale;
  2423. +       if (dash != 0)
  2424. +       {
  2425. +          XSetDashes (mainDisplay, drawGC, 0, dashList[dash],
  2426. +                dashListLength[dash]);
  2427. +          values.line_style = LineOnOffDash;
  2428. +       }
  2429. +       else
  2430. +          values.line_style = LineSolid;
  2431.         XChangeGC (mainDisplay, drawGC,
  2432. !             GCForeground | GCFunction | GCFillStyle | GCStipple | GCLineWidth |
  2433. !             GCLineStyle, &values);
  2434.         XDrawArc (mainDisplay, window, drawGC, bbox.ltx, bbox.lty,
  2435.               bbox.rbx-bbox.ltx, bbox.rby-bbox.lty, 0, 360*64);
  2436. ***************
  2437. *** 211,214 ****
  2438. --- 240,244 ----
  2439.      oval_ptr->width = lineWidth;
  2440.      oval_ptr->pen = penPat;
  2441. +    oval_ptr->dash = curDash;
  2442.   
  2443.      obj_ptr = (struct ObjRec *) calloc (1, sizeof(struct ObjRec));
  2444. ***************
  2445. *** 257,262 ****
  2446.      values.fill_style = FillSolid;
  2447.      values.line_width = 0;
  2448.      XChangeGC (mainDisplay, drawGC,
  2449. !       GCForeground | GCFunction | GCFillStyle | GCLineWidth, &values);
  2450.   
  2451.      grid_x = end_x = OrigX;
  2452. --- 287,294 ----
  2453.      values.fill_style = FillSolid;
  2454.      values.line_width = 0;
  2455. +    values.line_style = LineSolid;
  2456.      XChangeGC (mainDisplay, drawGC,
  2457. !          GCForeground | GCFunction | GCFillStyle | GCLineWidth | GCLineStyle,
  2458. !          &values);
  2459.   
  2460.      grid_x = end_x = OrigX;
  2461. ***************
  2462. *** 333,341 ****
  2463.      struct ObjRec    * ObjPtr;
  2464.   {
  2465. !    fprintf (FP, "oval(%s,", colorMenuItems[ObjPtr->color]);
  2466. !    fprintf (FP, "%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,", ObjPtr->obbox.ltx,
  2467.            ObjPtr->obbox.lty, ObjPtr->obbox.rbx, ObjPtr->obbox.rby,
  2468.            ObjPtr->detail.o->fill, ObjPtr->detail.o->width,
  2469. !          ObjPtr->detail.o->pen, ObjPtr->id);
  2470.      SaveAttrs (FP, ObjPtr->lattr);
  2471.      fprintf (FP, ")");
  2472. --- 365,373 ----
  2473.      struct ObjRec    * ObjPtr;
  2474.   {
  2475. !    fprintf (FP, "oval('%s',", colorMenuItems[ObjPtr->color]);
  2476. !    fprintf (FP, "%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,", ObjPtr->obbox.ltx,
  2477.            ObjPtr->obbox.lty, ObjPtr->obbox.rbx, ObjPtr->obbox.rby,
  2478.            ObjPtr->detail.o->fill, ObjPtr->detail.o->width,
  2479. !          ObjPtr->detail.o->pen, ObjPtr->id, ObjPtr->detail.o->dash);
  2480.      SaveAttrs (FP, ObjPtr->lattr);
  2481.      fprintf (FP, ")");
  2482. ***************
  2483. *** 348,352 ****
  2484.      struct OvalRec    * oval_ptr;
  2485.      char            color_str[20], * s;
  2486. !    int            ltx, lty, rbx, rby, fill, width, pen, w;
  2487.   
  2488.      * ObjPtr = (struct ObjRec *) calloc (1, sizeof(struct ObjRec));
  2489. --- 380,384 ----
  2490.      struct OvalRec    * oval_ptr;
  2491.      char            color_str[20], * s;
  2492. !    int            ltx, lty, rbx, rby, fill, width, pen, dash, w;
  2493.   
  2494.      * ObjPtr = (struct ObjRec *) calloc (1, sizeof(struct ObjRec));
  2495. ***************
  2496. *** 365,368 ****
  2497. --- 397,401 ----
  2498.         }
  2499.         (*ObjPtr)->id = objId++;
  2500. +       dash = 0;
  2501.      }
  2502.      else if (fileVersion <= 7)
  2503. ***************
  2504. *** 371,376 ****
  2505.               <x, <y, &rbx, &rby, &fill, &width, &pen);
  2506.         (*ObjPtr)->id = objId++;
  2507.      }
  2508. !    else
  2509.      {
  2510.         sscanf (s, "%d , %d, %d , %d , %d , %d , %d , %d",
  2511. --- 404,410 ----
  2512.               <x, <y, &rbx, &rby, &fill, &width, &pen);
  2513.         (*ObjPtr)->id = objId++;
  2514. +       dash = 0;
  2515.      }
  2516. !    else if (fileVersion <= 8)
  2517.      {
  2518.         sscanf (s, "%d , %d, %d , %d , %d , %d , %d , %d",
  2519. ***************
  2520. *** 377,381 ****
  2521. --- 411,423 ----
  2522.               <x, <y, &rbx, &rby, &fill, &width, &pen, &((*ObjPtr)->id));
  2523.         if ((*ObjPtr)->id >= objId) objId = (*ObjPtr)->id + 1;
  2524. +       dash = 0;
  2525.      }
  2526. +    else
  2527. +    {
  2528. +       sscanf (s, "%d , %d, %d , %d , %d , %d , %d , %d , %d",
  2529. +             <x, <y, &rbx, &rby, &fill, &width, &pen, &((*ObjPtr)->id),
  2530. +             &dash);
  2531. +       if ((*ObjPtr)->id >= objId) objId = (*ObjPtr)->id + 1;
  2532. +    }
  2533.   
  2534.      oval_ptr->fill = fill;
  2535. ***************
  2536. *** 382,385 ****
  2537. --- 424,428 ----
  2538.      oval_ptr->width = width;
  2539.      oval_ptr->pen = pen;
  2540. +    oval_ptr->dash = dash;
  2541.      (*ObjPtr)->x = ltx;
  2542.      (*ObjPtr)->y = lty;
  2543. ---------------------------------> cut here <---------------------------------
  2544. -- 
  2545. Bill Cheng // UCLA Computer Science Department // (213) 206-7135
  2546. 3277 Boelter Hall // Los Angeles, California 90024 // USA
  2547. william@CS.UCLA.EDU      ...!{uunet|ucbvax}!cs.ucla.edu!william
  2548.  
  2549. From news@CS.UCLA.EDU Mon Jan  7 18:39:55 1991
  2550. Received: from Shemp.CS.UCLA.EDU by uunet.UU.NET (5.61/1.14) with SMTP 
  2551.     id AA03202; Mon, 7 Jan 91 18:39:40 -0500
  2552. Received: by shemp.cs.ucla.edu
  2553.     (Sendmail 5.61a+YP/2.33) id AA04454;
  2554.     Mon, 7 Jan 91 15:39:32 -0800
  2555. Newsgroups: comp.sources.x
  2556. Path: oahu.cs.ucla.edu!william
  2557. From: william@CS.UCLA.EDU (William Cheng)
  2558. Subject: v07i056-076: tgif, Patch7 (tgif-1.16 => tgif-1.19), Part03/05
  2559. Message-Id: <1991Jan7.233920.4392@cs.ucla.edu>
  2560. Followup-To: william@cs.ucla.edu
  2561. Originator: william@oahu.cs.ucla.edu
  2562. Keywords: draw, tool, postscript, latex, hierarchical, x11, xlib, wysiwyg
  2563. Sender: news@cs.ucla.edu (Mr. News)
  2564. Nntp-Posting-Host: oahu.cs.ucla.edu
  2565. Organization: UCLA Computer Science Department
  2566. Date: Mon, 7 Jan 91 23:39:20 GMT
  2567. Patch-To: tgif: Volume 7, Issues 56-76
  2568. Apparently-To: comp-sources-x@uunet.uu.net
  2569. Status: O
  2570.  
  2571. Submitted-by: William Cheng <william@cs.ucla.edu>
  2572. ---------------------------------> cut here <---------------------------------
  2573. *** pattern.c.orig    Mon Jan  7 13:05:27 1991
  2574. --- pattern.c    Mon Jan  7 13:05:29 1991
  2575. ***************
  2576. *** 6,10 ****
  2577.   #ifndef lint
  2578.   static char RCSid[] =
  2579. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/pattern.c,v 1.4 90/10/27 15:40:34 william Exp $";
  2580.   #endif
  2581.   
  2582. --- 6,10 ----
  2583.   #ifndef lint
  2584.   static char RCSid[] =
  2585. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/pattern.c,v 1.5 90/10/31 11:37:19 william Exp $";
  2586.   #endif
  2587.   
  2588. ***************
  2589. *** 626,646 ****
  2590.      int        index, ltx, lty, rbx, rby, * fore_colors, * valid;
  2591.   
  2592. !    DefaultColorArrays (MAXLINEWIDTHS+MAXLINETYPES+MAXLINESTYLES, &fore_colors,
  2593. !          &valid);
  2594. !    cfree (valid);
  2595. !    index = PxMpMenuLoop (X, Y, menuImageW, menuImageH,
  2596. !          MAXLINEWIDTHS+MAXLINETYPES+MAXLINESTYLES, 1,
  2597. !          MAXLINEWIDTHS+MAXLINETYPES+MAXLINESTYLES,
  2598. !          fore_colors, lineStylePixmap, SINGLECOLOR);
  2599. !    if (index == INVALID) return;
  2600. ! /* DefaultColorArrays (MAXLINEWIDTHS+MAXLINETYPES+MAXDASHES+MAXLINESTYLES, */
  2601. ! /*       &fore_colors, &valid); */
  2602.   /* cfree (valid); */
  2603.   /* index = PxMpMenuLoop (X, Y, menuImageW, menuImageH, */
  2604. ! /*       MAXLINEWIDTHS+MAXLINETYPES+MAXDASHES+MAXLINESTYLES, 1, */
  2605. ! /*       MAXLINEWIDTHS+MAXLINETYPES+MAXDASHES+MAXLINESTYLES, */
  2606.   /*       fore_colors, lineStylePixmap, SINGLECOLOR); */
  2607.   /* if (index == INVALID) return; */
  2608.   
  2609.      if (index < MAXLINEWIDTHS)
  2610.         ChangeAllSelLineWidth (index);
  2611. --- 626,647 ----
  2612.      int        index, ltx, lty, rbx, rby, * fore_colors, * valid;
  2613.   
  2614. ! /* DefaultColorArrays (MAXLINEWIDTHS+MAXLINETYPES+MAXLINESTYLES, &fore_colors, */
  2615. ! /*       &valid); */
  2616.   /* cfree (valid); */
  2617.   /* index = PxMpMenuLoop (X, Y, menuImageW, menuImageH, */
  2618. ! /*       MAXLINEWIDTHS+MAXLINETYPES+MAXLINESTYLES, 1, */
  2619. ! /*       MAXLINEWIDTHS+MAXLINETYPES+MAXLINESTYLES, */
  2620.   /*       fore_colors, lineStylePixmap, SINGLECOLOR); */
  2621.   /* if (index == INVALID) return; */
  2622.   
  2623. +    DefaultColorArrays (MAXLINEWIDTHS+MAXLINETYPES+MAXDASHES+MAXLINESTYLES,
  2624. +          &fore_colors, &valid);
  2625. +    cfree (valid);
  2626. +    index = PxMpMenuLoop (X, Y, menuImageW, menuImageH,
  2627. +          MAXLINEWIDTHS+MAXLINETYPES+MAXDASHES+MAXLINESTYLES, 1,
  2628. +          MAXLINEWIDTHS+MAXLINETYPES+MAXDASHES+MAXLINESTYLES,
  2629. +          fore_colors, lineStylePixmap, SINGLECOLOR);
  2630. +    if (index == INVALID) return;
  2631.      if (index < MAXLINEWIDTHS)
  2632.         ChangeAllSelLineWidth (index);
  2633. ***************
  2634. *** 647,656 ****
  2635.      else if (index < MAXLINEWIDTHS+MAXLINETYPES)
  2636.         ChangeAllSelLineType (index - MAXLINEWIDTHS);
  2637. ! /* else if (index < MAXLINEWIDTHS+MAXLINETYPES+MAXDASHES) */
  2638. ! /*    ChangeAllSelDashes (index - MAXLINEWIDTHS - MAXLINETYPES); */
  2639. ! /* else */
  2640. ! /*    ChangeAllSelLineStyle (index - MAXLINEWIDTHS - MAXLINETYPES - MAXDASHES); */
  2641.      else
  2642. !       ChangeAllSelLineStyle (index - MAXLINEWIDTHS - MAXLINETYPES);
  2643.   }
  2644.   
  2645. --- 648,655 ----
  2646.      else if (index < MAXLINEWIDTHS+MAXLINETYPES)
  2647.         ChangeAllSelLineType (index - MAXLINEWIDTHS);
  2648. !    else if (index < MAXLINEWIDTHS+MAXLINETYPES+MAXDASHES)
  2649. !       ChangeAllSelDashes (index - MAXLINEWIDTHS - MAXLINETYPES);
  2650.      else
  2651. !       ChangeAllSelLineStyle (index - MAXLINEWIDTHS - MAXLINETYPES - MAXDASHES);
  2652.   }
  2653.   
  2654. *** poly.c.orig    Mon Jan  7 13:05:51 1991
  2655. --- poly.c    Mon Jan  7 13:05:54 1991
  2656. ***************
  2657. *** 6,10 ****
  2658.   #ifndef lint
  2659.   static char RCSid[] =
  2660. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/poly.c,v 1.7 90/10/27 15:10:15 william Exp $";
  2661.   #endif
  2662.   
  2663. --- 6,10 ----
  2664.   #ifndef lint
  2665.   static char RCSid[] =
  2666. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/poly.c,v 1.10 90/11/10 13:51:04 william Exp $";
  2667.   #endif
  2668.   
  2669. ***************
  2670. *** 117,120 ****
  2671. --- 117,121 ----
  2672.      poly_ptr->curved = curSpline;
  2673.      poly_ptr->fill = objFill;
  2674. +    poly_ptr->dash = curDash;
  2675.      obj_ptr = (struct ObjRec *) calloc (1, sizeof(struct ObjRec));
  2676.      obj_ptr->color = colorIndex;
  2677. ***************
  2678. *** 175,181 ****
  2679.    */
  2680.   
  2681. ! void MyLine (Win,Cont,Rb,N,StartX,StartY,EndX,EndY,W,S,P,Pix)
  2682.      Window    Win;
  2683. !    int        Cont, Rb, N, StartX, StartY, EndX, EndY, W, S, P, Pix;
  2684.      /* 'Cont' means continue */
  2685.      /* 'Rb' means rubber-band */
  2686. --- 176,182 ----
  2687.    */
  2688.   
  2689. ! void MyLine (Win,Cont,Rb,N,StartX,StartY,EndX,EndY,W,S,P,Pix,Dash)
  2690.      Window    Win;
  2691. !    int        Cont, Rb, N, StartX, StartY, EndX, EndY, W, S, P, Pix, Dash;
  2692.      /* 'Cont' means continue */
  2693.      /* 'Rb' means rubber-band */
  2694. ***************
  2695. *** 245,250 ****
  2696.         values.fill_style = FillSolid;
  2697.         values.line_width = 0;
  2698.         XChangeGC (mainDisplay, drawGC,
  2699. !             GCForeground | GCFunction | GCFillStyle | GCLineWidth, &values);
  2700.      }
  2701.      else if (P != 0)
  2702. --- 246,253 ----
  2703.         values.fill_style = FillSolid;
  2704.         values.line_width = 0;
  2705. +       values.line_style = LineSolid;
  2706.         XChangeGC (mainDisplay, drawGC,
  2707. !             GCForeground | GCFunction | GCFillStyle | GCLineWidth | GCLineStyle,
  2708. !             &values);
  2709.      }
  2710.      else if (P != 0)
  2711. ***************
  2712. *** 255,261 ****
  2713.         values.stipple = patPixmap[P];
  2714.         values.line_width = widthOfLine[W] >> zoomScale;
  2715.         XChangeGC (mainDisplay, drawGC,
  2716. !             GCForeground | GCFunction | GCFillStyle | GCStipple | GCLineWidth,
  2717. !             &values);
  2718.      }
  2719.      else
  2720. --- 258,272 ----
  2721.         values.stipple = patPixmap[P];
  2722.         values.line_width = widthOfLine[W] >> zoomScale;
  2723. +       if (Dash != 0)
  2724. +       {
  2725. +          XSetDashes (mainDisplay, drawGC, 0, dashList[Dash],
  2726. +                dashListLength[Dash]);
  2727. +          values.line_style = LineOnOffDash;
  2728. +       }
  2729. +       else
  2730. +          values.line_style = LineSolid;
  2731.         XChangeGC (mainDisplay, drawGC,
  2732. !             GCForeground | GCFunction | GCFillStyle | GCStipple | GCLineWidth |
  2733. !             GCLineStyle, &values);
  2734.      }
  2735.      else
  2736. ***************
  2737. *** 344,350 ****
  2738.      values.fill_style = FillSolid;
  2739.      values.line_width = 0;
  2740.   
  2741.      XChangeGC (mainDisplay, drawGC,
  2742. !          GCForeground | GCFunction | GCFillStyle | GCLineWidth,
  2743.            &values);
  2744.   
  2745. --- 355,362 ----
  2746.      values.fill_style = FillSolid;
  2747.      values.line_width = 0;
  2748. +    values.line_style = LineSolid;
  2749.   
  2750.      XChangeGC (mainDisplay, drawGC,
  2751. !          GCForeground | GCFunction | GCFillStyle | GCLineWidth | GCLineStyle,
  2752.            &values);
  2753.   
  2754. ***************
  2755. *** 362,366 ****
  2756.            motion_ev = &(input.xmotion);
  2757.            MyLine (drawWindow, CONT, RB, num_pts, OrigX, OrigY, grid_x,
  2758. !                grid_y, lineWidth, lineStyle, penPat, xor_pixel);
  2759.   
  2760.            end_x = motion_ev->x;
  2761. --- 374,378 ----
  2762.            motion_ev = &(input.xmotion);
  2763.            MyLine (drawWindow, CONT, RB, num_pts, OrigX, OrigY, grid_x,
  2764. !                grid_y, lineWidth, lineStyle, penPat, xor_pixel,0);
  2765.   
  2766.            end_x = motion_ev->x;
  2767. ***************
  2768. *** 369,373 ****
  2769.            MarkRulers (grid_x, grid_y);
  2770.            MyLine (drawWindow, CONT, RB, num_pts, OrigX, OrigY, grid_x,
  2771. !                grid_y, lineWidth, lineStyle, penPat, xor_pixel);
  2772.            while (XCheckMaskEvent (mainDisplay, PointerMotionMask, &ev)) ;
  2773.         }
  2774. --- 381,385 ----
  2775.            MarkRulers (grid_x, grid_y);
  2776.            MyLine (drawWindow, CONT, RB, num_pts, OrigX, OrigY, grid_x,
  2777. !                grid_y, lineWidth, lineStyle, penPat, xor_pixel,0);
  2778.            while (XCheckMaskEvent (mainDisplay, PointerMotionMask, &ev)) ;
  2779.         }
  2780. ***************
  2781. *** 376,380 ****
  2782.            button_ev = &(input.xbutton);
  2783.            MyLine (drawWindow, CONT, RB, num_pts, OrigX, OrigY, grid_x,
  2784. !                grid_y, lineWidth, lineStyle, penPat, xor_pixel);
  2785.   
  2786.            GridXY (end_x, end_y, &grid_x, &grid_y);
  2787. --- 388,392 ----
  2788.            button_ev = &(input.xbutton);
  2789.            MyLine (drawWindow, CONT, RB, num_pts, OrigX, OrigY, grid_x,
  2790. !                grid_y, lineWidth, lineStyle, penPat, xor_pixel,0);
  2791.   
  2792.            GridXY (end_x, end_y, &grid_x, &grid_y);
  2793. ***************
  2794. *** 394,398 ****
  2795.                     MyLine (drawWindow, CONT, NORB, num_pts-1, OrigX, OrigY,
  2796.                           grid_x, grid_y, lineWidth, lineStyle, penPat,
  2797. !                         pixel);
  2798.                  OrigX = grid_x;
  2799.                  OrigY = grid_y;
  2800. --- 406,410 ----
  2801.                     MyLine (drawWindow, CONT, NORB, num_pts-1, OrigX, OrigY,
  2802.                           grid_x, grid_y, lineWidth, lineStyle, penPat,
  2803. !                         pixel,0);
  2804.                  OrigX = grid_x;
  2805.                  OrigY = grid_y;
  2806. ***************
  2807. *** 404,408 ****
  2808.                     MyLine (drawWindow, NOCONT, NORB, num_pts-1, OrigX,
  2809.                           OrigY, grid_x, grid_y, lineWidth, lineStyle,
  2810. !                         penPat, pixel);
  2811.   
  2812.                  done = TRUE;
  2813. --- 416,420 ----
  2814.                     MyLine (drawWindow, NOCONT, NORB, num_pts-1, OrigX,
  2815.                           OrigY, grid_x, grid_y, lineWidth, lineStyle,
  2816. !                         penPat, pixel,0);
  2817.   
  2818.                  done = TRUE;
  2819. ***************
  2820. *** 416,424 ****
  2821.      {
  2822.         CreatePolyObj (num_pts);
  2823. !       if (topObj->detail.p->curved == LT_SPLINE ||
  2824. !             topObj->detail.p->fill != NONEPAT)
  2825. !          RedrawAnArea (botObj, topObj->bbox.ltx-(1<<zoomScale),
  2826. !                topObj->bbox.lty-(1<<zoomScale), topObj->bbox.rbx+(1<<zoomScale),
  2827. !                topObj->bbox.rby+(1<<zoomScale));
  2828.         polyDrawn = TRUE;
  2829.         SetFileModified (TRUE);
  2830. --- 428,434 ----
  2831.      {
  2832.         CreatePolyObj (num_pts);
  2833. !       RedrawAnArea (botObj, topObj->bbox.ltx-(1<<zoomScale),
  2834. !             topObj->bbox.lty-(1<<zoomScale), topObj->bbox.rbx+(1<<zoomScale),
  2835. !             topObj->bbox.rby+(1<<zoomScale));
  2836.         polyDrawn = TRUE;
  2837.         SetFileModified (TRUE);
  2838. ***************
  2839. *** 473,477 ****
  2840.   {
  2841.      XPoint    * v;
  2842. !    int        num_pts, fill, pen, width, curved, w, aw, ah, dy, dx;
  2843.   
  2844.      fill = ObjPtr->detail.p->fill;
  2845. --- 483,488 ----
  2846.   {
  2847.      XPoint    * v;
  2848. !    int        i, num_pts, fill, pen, width, curved, dash, color_index;
  2849. !    int        w, aw, ah, dy, dx;
  2850.   
  2851.      fill = ObjPtr->detail.p->fill;
  2852. ***************
  2853. *** 479,485 ****
  2854. --- 490,508 ----
  2855.      pen = ObjPtr->detail.p->pen;
  2856.      curved = ObjPtr->detail.p->curved;
  2857. +    dash = ObjPtr->detail.p->dash;
  2858.      v = ObjPtr->detail.p->vlist;
  2859.      num_pts = ObjPtr->detail.p->n;
  2860.   
  2861. +    if (fill == NONEPAT && pen == NONEPAT) return;
  2862. +    if (colorDump)
  2863. +    {
  2864. +       color_index = ObjPtr->color;
  2865. +       fprintf (FP, "%.3f %.3f %.3f setrgbcolor\n",
  2866. +             ((float)tgifColors[color_index].red/maxRGB),
  2867. +             ((float)tgifColors[color_index].green/maxRGB),
  2868. +             ((float)tgifColors[color_index].blue/maxRGB));
  2869. +    }
  2870.      if (fill != NONEPAT && num_pts > 2)
  2871.      {
  2872. ***************
  2873. *** 545,549 ****
  2874.      }
  2875.   
  2876. !    if (pen == NONEPAT) return;
  2877.      fprintf (FP, "gsave\n");
  2878.   
  2879. --- 568,573 ----
  2880.      }
  2881.   
  2882. !    if (pen == NONEPAT) { fprintf (FP, "\n"); return; }
  2883.      fprintf (FP, "gsave\n");
  2884.   
  2885. ***************
  2886. *** 562,565 ****
  2887. --- 586,597 ----
  2888.   
  2889.      fprintf (FP, "   %1d setlinewidth\n", w);
  2890. +    if (dash != 0)
  2891. +    {
  2892. +       fprintf (FP, "   [");
  2893. +       for (i = 0; i < dashListLength[dash]-1; i++)
  2894. +          fprintf (FP, "%1d ", (int)(dashList[dash][i]));
  2895. +       fprintf (FP, "%1d] 0 setdash\n",
  2896. +             (int)(dashList[dash][dashListLength[dash]-1]));
  2897. +    }
  2898.   
  2899.      fprintf (FP, "newpath\n   %1d %1d moveto\n", v[0].x, v[0].y);
  2900. ***************
  2901. *** 622,626 ****
  2902.      register struct PolyRec    * poly_ptr = ObjPtr->detail.p;
  2903.      XPoint            * pv = poly_ptr->vlist, * v;
  2904. !    int                pen, width, pixel, fill, curved, n;
  2905.      int                x1, y1, x2, y2, ah, real_x_off, real_y_off;
  2906.      Pixmap            tile;
  2907. --- 654,658 ----
  2908.      register struct PolyRec    * poly_ptr = ObjPtr->detail.p;
  2909.      XPoint            * pv = poly_ptr->vlist, * v;
  2910. !    int                pen, width, pixel, fill, curved, n, dash;
  2911.      int                x1, y1, x2, y2, ah, real_x_off, real_y_off;
  2912.      Pixmap            tile;
  2913. ***************
  2914. *** 632,639 ****
  2915.      pen = poly_ptr->pen;
  2916.      curved = poly_ptr->curved;
  2917.      pixel = colorPixels[ObjPtr->color];
  2918.   
  2919.      if (curved == LT_SPLINE)
  2920. !       DrawSplinePolyObj (Win, XOff, YOff, fill, width, pen, pixel, poly_ptr);
  2921.      else
  2922.      {
  2923. --- 664,673 ----
  2924.      pen = poly_ptr->pen;
  2925.      curved = poly_ptr->curved;
  2926. +    dash = poly_ptr->dash;
  2927.      pixel = colorPixels[ObjPtr->color];
  2928.   
  2929.      if (curved == LT_SPLINE)
  2930. !       DrawSplinePolyObj (Win, XOff, YOff, fill, width, pen, dash, pixel,
  2931. !             poly_ptr);
  2932.      else
  2933.      {
  2934. ***************
  2935. *** 671,675 ****
  2936.   
  2937.            MyLine (Win, CONT, NORB, i+1, x1, y1, x2, y2, poly_ptr->width,
  2938. !                poly_ptr->style, pen, pixel);
  2939.         }
  2940.         x1 = (pv[i].x-real_x_off)>>zoomScale;
  2941. --- 705,709 ----
  2942.   
  2943.            MyLine (Win, CONT, NORB, i+1, x1, y1, x2, y2, poly_ptr->width,
  2944. !                poly_ptr->style, pen, pixel, dash);
  2945.         }
  2946.         x1 = (pv[i].x-real_x_off)>>zoomScale;
  2947. ***************
  2948. *** 679,683 ****
  2949.   
  2950.         MyLine (Win, NOCONT, NORB, i+1, x1, y1, x2, y2, poly_ptr->width,
  2951. !             poly_ptr->style, pen, pixel);
  2952.      }
  2953.   }
  2954. --- 713,717 ----
  2955.   
  2956.         MyLine (Win, NOCONT, NORB, i+1, x1, y1, x2, y2, poly_ptr->width,
  2957. !             poly_ptr->style, pen, pixel, dash);
  2958.      }
  2959.   }
  2960. ***************
  2961. *** 691,695 ****
  2962.   
  2963.      n = poly_ptr->n;
  2964. !    fprintf (FP, "poly(%s,%1d,[", colorMenuItems[ObjPtr->color], poly_ptr->n);
  2965.      for (i = 0; i < n-1; i++)
  2966.      {
  2967. --- 725,729 ----
  2968.   
  2969.      n = poly_ptr->n;
  2970. !    fprintf (FP, "poly('%s',%1d,[", colorMenuItems[ObjPtr->color], poly_ptr->n);
  2971.      for (i = 0; i < n-1; i++)
  2972.      {
  2973. ***************
  2974. *** 697,702 ****
  2975.      }
  2976.      fprintf (FP, "%1d,%1d", poly_ptr->vlist[n-1].x, poly_ptr->vlist[n-1].y);
  2977. !    fprintf (FP, "],%1d,%1d,%1d,%1d,%1d,%1d,", poly_ptr->style, poly_ptr->width,
  2978. !          poly_ptr->pen, ObjPtr->id, poly_ptr->curved, poly_ptr->fill);
  2979.      SaveAttrs (FP, ObjPtr->lattr);
  2980.      fprintf (FP, ")");
  2981. --- 731,736 ----
  2982.      }
  2983.      fprintf (FP, "%1d,%1d", poly_ptr->vlist[n-1].x, poly_ptr->vlist[n-1].y);
  2984. !    fprintf (FP, "],%1d,%1d,%1d,%1d,%1d,%1d,%1d,", poly_ptr->style, poly_ptr->width,
  2985. !          poly_ptr->pen, ObjPtr->id, poly_ptr->curved, poly_ptr->fill, poly_ptr->dash);
  2986.      SaveAttrs (FP, ObjPtr->lattr);
  2987.      fprintf (FP, ")");
  2988. ***************
  2989. *** 754,757 ****
  2990. --- 788,792 ----
  2991.            case 2: poly_ptr->width = 6; break;
  2992.         }
  2993. +       poly_ptr->dash = 0;
  2994.      }
  2995.      else if (fileVersion <= 3)
  2996. ***************
  2997. *** 773,776 ****
  2998. --- 808,812 ----
  2999.            case 2: poly_ptr->width = 6; break;
  3000.         }
  3001. +       poly_ptr->dash = 0;
  3002.      }
  3003.      else if (fileVersion <= 4)
  3004. ***************
  3005. *** 786,789 ****
  3006. --- 822,826 ----
  3007.            case 2: poly_ptr->width = 6; break;
  3008.         }
  3009. +       poly_ptr->dash = 0;
  3010.      }
  3011.      else if (fileVersion <= 5)
  3012. ***************
  3013. *** 798,803 ****
  3014.            case 2: poly_ptr->width = 6; break;
  3015.         }
  3016.      }
  3017. !    else
  3018.      {
  3019.         sscanf (s, "%d , %d , %d , %d, %d, %d", &(poly_ptr->style),
  3020. --- 835,841 ----
  3021.            case 2: poly_ptr->width = 6; break;
  3022.         }
  3023. +       poly_ptr->dash = 0;
  3024.      }
  3025. !    else if (fileVersion <= 8)
  3026.      {
  3027.         sscanf (s, "%d , %d , %d , %d, %d, %d", &(poly_ptr->style),
  3028. ***************
  3029. *** 804,807 ****
  3030. --- 842,853 ----
  3031.               &(poly_ptr->width), &(poly_ptr->pen), &((*ObjPtr)->id),
  3032.               &(poly_ptr->curved), &(poly_ptr->fill));
  3033. +       if ((*ObjPtr)->id >= objId) objId = (*ObjPtr)->id + 1;
  3034. +       poly_ptr->dash = 0;
  3035. +    }
  3036. +    else
  3037. +    {
  3038. +       sscanf (s, "%d , %d , %d , %d , %d , %d , %d", &(poly_ptr->style),
  3039. +             &(poly_ptr->width), &(poly_ptr->pen), &((*ObjPtr)->id),
  3040. +             &(poly_ptr->curved), &(poly_ptr->fill), &(poly_ptr->dash));
  3041.         if ((*ObjPtr)->id >= objId) objId = (*ObjPtr)->id + 1;
  3042.      }
  3043. *** polygon.c.orig    Mon Jan  7 13:06:06 1991
  3044. --- polygon.c    Mon Jan  7 13:06:09 1991
  3045. ***************
  3046. *** 6,10 ****
  3047.   #ifndef lint
  3048.   static char RCSid[] =
  3049. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/polygon.c,v 1.6 90/10/27 15:10:32 william Exp $";
  3050.   #endif
  3051.   
  3052. --- 6,10 ----
  3053.   #ifndef lint
  3054.   static char RCSid[] =
  3055. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/polygon.c,v 1.9 90/11/10 13:51:09 william Exp $";
  3056.   #endif
  3057.   
  3058. ***************
  3059. *** 52,56 ****
  3060.   {
  3061.      XPoint    * v = ObjPtr->detail.g->vlist;
  3062. !    int        num_pts = ObjPtr->detail.g->n, fill, width, pen, curved;
  3063.   
  3064.      fill = ObjPtr->detail.g->fill;
  3065. --- 52,57 ----
  3066.   {
  3067.      XPoint    * v = ObjPtr->detail.g->vlist;
  3068. !    int        num_pts = ObjPtr->detail.g->n, i;
  3069. !    int        fill, width, pen, curved, dash, color_index;
  3070.   
  3071.      fill = ObjPtr->detail.g->fill;
  3072. ***************
  3073. *** 58,62 ****
  3074. --- 59,75 ----
  3075.      pen = ObjPtr->detail.g->pen;
  3076.      curved = ObjPtr->detail.g->curved;
  3077. +    dash = ObjPtr->detail.g->dash;
  3078.   
  3079. +    if (fill == NONEPAT && pen == NONEPAT) return;
  3080. +    if (colorDump)
  3081. +    {
  3082. +       color_index = ObjPtr->color;
  3083. +       fprintf (FP, "%.3f %.3f %.3f setrgbcolor\n",
  3084. +             ((float)tgifColors[color_index].red/maxRGB),
  3085. +             ((float)tgifColors[color_index].green/maxRGB),
  3086. +             ((float)tgifColors[color_index].blue/maxRGB));
  3087. +    }
  3088.      if (fill != NONEPAT)
  3089.      {
  3090. ***************
  3091. *** 115,177 ****
  3092.      }
  3093.   
  3094. !    if (pen != NONEPAT)
  3095.      {
  3096. !       fprintf (FP, "%1d setlinewidth\n", widthOfLine[width]);
  3097.   
  3098. !       switch (curved)
  3099. !       {
  3100. !          case LT_STRAIGHT:
  3101. !             switch (pen)
  3102. !             {
  3103. !                case SOLIDPAT:
  3104. !                   fprintf (FP, "newpath\n   %1d %1d moveto\n", v[0].x, v[0].y);
  3105. !                   DumpPoints (FP, num_pts-1, v, 3);
  3106. !                   fprintf (FP, "closepath stroke\n");
  3107. !                   break;
  3108. !                case BACKPAT:
  3109. !                   fprintf (FP, "newpath\n   %1d %1d moveto\n", v[0].x, v[0].y);
  3110. !                   DumpPoints (FP, num_pts-1, v, 3);
  3111. !                   fprintf (FP, "closepath 1 setgray stroke 0 setgray\n");
  3112. !                   break;
  3113. !                default:
  3114. !                   fprintf (FP, "gsave\n");
  3115. !                   fprintf (FP, "   pat%1d 8 1 0 72 300 32 div div setpattern\n",
  3116. !                         pen);
  3117. !                   fprintf (FP, "   newpath\n");
  3118. !                   fprintf (FP, "      %1d %1d moveto\n", v[0].x, v[0].y);
  3119. !                   DumpPoints (FP, num_pts-1, v, 6);
  3120. !                   fprintf (FP, "   closepath stroke\n");
  3121. !                   fprintf (FP, "grestore\n");
  3122. !                   break;
  3123. !             }
  3124. !             break;
  3125. !          case LT_SPLINE:
  3126. !             switch (pen)
  3127. !             {
  3128. !                case SOLIDPAT:
  3129. !                   fprintf (FP, "newpath\n");
  3130. !                   DumpCurvedPolygonPoints (FP, num_pts, v, 3);
  3131. !                   fprintf (FP, "closepath stroke\n");
  3132. !                   break;
  3133. !                case BACKPAT:
  3134. !                   fprintf (FP, "newpath\n");
  3135. !                   DumpCurvedPolygonPoints (FP, num_pts, v, 3);
  3136. !                   fprintf (FP, "closepath 1 setgray stroke 0 setgray\n");
  3137. !                   break;
  3138. !                default:
  3139. !                   fprintf (FP, "gsave\n");
  3140. !                   fprintf (FP, "   pat%1d 8 1 0 72 300 32 div div setpattern\n",
  3141. !                         pen);
  3142. !                   fprintf (FP, "   newpath\n");
  3143. !                   DumpCurvedPolygonPoints (FP, num_pts, v, 6);
  3144. !                   fprintf (FP, "   closepath stroke\n");
  3145. !                   fprintf (FP, "grestore\n");
  3146. !                   break;
  3147. !             }
  3148. !             break;
  3149. !       }
  3150. !       fprintf (FP, "1 setlinewidth\n");
  3151.      }
  3152. !    fprintf (FP, "\n");
  3153.   }
  3154.   
  3155. --- 128,197 ----
  3156.      }
  3157.   
  3158. !    if (pen == NONEPAT) { fprintf (FP, "\n"); return; }
  3159. !    fprintf (FP, "%1d setlinewidth\n", widthOfLine[width]);
  3160. !    if (dash != 0)
  3161.      {
  3162. !       fprintf (FP, "[");
  3163. !       for (i = 0; i < dashListLength[dash]-1; i++)
  3164. !          fprintf (FP, "%1d ", (int)(dashList[dash][i]));
  3165. !       fprintf (FP, "%1d] 0 setdash\n",
  3166. !             (int)(dashList[dash][dashListLength[dash]-1]));
  3167. !    }
  3168.   
  3169. !    switch (curved)
  3170. !    {
  3171. !       case LT_STRAIGHT:
  3172. !          switch (pen)
  3173. !          {
  3174. !             case SOLIDPAT:
  3175. !                fprintf (FP, "newpath\n   %1d %1d moveto\n", v[0].x, v[0].y);
  3176. !                DumpPoints (FP, num_pts-1, v, 3);
  3177. !                fprintf (FP, "closepath stroke\n");
  3178. !                break;
  3179. !             case BACKPAT:
  3180. !                fprintf (FP, "newpath\n   %1d %1d moveto\n", v[0].x, v[0].y);
  3181. !                DumpPoints (FP, num_pts-1, v, 3);
  3182. !                fprintf (FP, "closepath 1 setgray stroke 0 setgray\n");
  3183. !                break;
  3184. !             default:
  3185. !                fprintf (FP, "gsave\n");
  3186. !                fprintf (FP, "   pat%1d 8 1 0 72 300 32 div div setpattern\n",
  3187. !                      pen);
  3188. !                fprintf (FP, "   newpath\n");
  3189. !                fprintf (FP, "      %1d %1d moveto\n", v[0].x, v[0].y);
  3190. !                DumpPoints (FP, num_pts-1, v, 6);
  3191. !                fprintf (FP, "   closepath stroke\n");
  3192. !                fprintf (FP, "grestore\n");
  3193. !                break;
  3194. !          }
  3195. !          break;
  3196. !       case LT_SPLINE:
  3197. !          switch (pen)
  3198. !          {
  3199. !             case SOLIDPAT:
  3200. !                fprintf (FP, "newpath\n");
  3201. !                DumpCurvedPolygonPoints (FP, num_pts, v, 3);
  3202. !                fprintf (FP, "closepath stroke\n");
  3203. !                break;
  3204. !             case BACKPAT:
  3205. !                fprintf (FP, "newpath\n");
  3206. !                DumpCurvedPolygonPoints (FP, num_pts, v, 3);
  3207. !                fprintf (FP, "closepath 1 setgray stroke 0 setgray\n");
  3208. !                break;
  3209. !             default:
  3210. !                fprintf (FP, "gsave\n");
  3211. !                fprintf (FP, "   pat%1d 8 1 0 72 300 32 div div setpattern\n",
  3212. !                      pen);
  3213. !                fprintf (FP, "   newpath\n");
  3214. !                DumpCurvedPolygonPoints (FP, num_pts, v, 6);
  3215. !                fprintf (FP, "   closepath stroke\n");
  3216. !                fprintf (FP, "grestore\n");
  3217. !                break;
  3218. !          }
  3219. !          break;
  3220.      }
  3221. !    if (dash != 0) fprintf (FP, "[] 0 setdash\n");
  3222. !    fprintf (FP, "1 setlinewidth\n\n");
  3223.   }
  3224.   
  3225. ***************
  3226. *** 184,188 ****
  3227.      XPoint        * v;
  3228.      struct PolygonRec    * polygon_ptr = ObjPtr->detail.g;
  3229. !    int            fill, width, pen, curved, pixel;
  3230.      int            real_x_off, real_y_off;
  3231.      XGCValues        values;
  3232. --- 204,208 ----
  3233.      XPoint        * v;
  3234.      struct PolygonRec    * polygon_ptr = ObjPtr->detail.g;
  3235. !    int            fill, width, pen, curved, dash, pixel;
  3236.      int            real_x_off, real_y_off;
  3237.      XGCValues        values;
  3238. ***************
  3239. *** 192,199 ****
  3240.      pen = polygon_ptr->pen;
  3241.      curved = polygon_ptr->curved;
  3242.      pixel = colorPixels[ObjPtr->color];
  3243.   
  3244.      if (curved == LT_SPLINE)
  3245. !       DrawSplinePolygonObj (Win, XOff, YOff, fill, width, pen, pixel,
  3246.               polygon_ptr);
  3247.      else
  3248. --- 212,220 ----
  3249.      pen = polygon_ptr->pen;
  3250.      curved = polygon_ptr->curved;
  3251. +    dash = polygon_ptr->dash;
  3252.      pixel = colorPixels[ObjPtr->color];
  3253.   
  3254.      if (curved == LT_SPLINE)
  3255. !       DrawSplinePolygonObj (Win, XOff, YOff, fill, width, pen, dash, pixel,
  3256.               polygon_ptr);
  3257.      else
  3258. ***************
  3259. *** 228,234 ****
  3260.            values.stipple = patPixmap[pen];
  3261.            values.line_width = widthOfLine[width] >> zoomScale;
  3262.            XChangeGC (mainDisplay, drawGC,
  3263.                  GCForeground | GCFunction | GCFillStyle | GCStipple |
  3264. !                GCLineWidth, &values);
  3265.   
  3266.            XDrawLines (mainDisplay, Win, drawGC, v, polygon_ptr->n,
  3267. --- 249,263 ----
  3268.            values.stipple = patPixmap[pen];
  3269.            values.line_width = widthOfLine[width] >> zoomScale;
  3270. +          if (dash != 0)
  3271. +          {
  3272. +             XSetDashes (mainDisplay, drawGC, 0, dashList[dash],
  3273. +                   dashListLength[dash]);
  3274. +             values.line_style = LineOnOffDash;
  3275. +          }
  3276. +          else
  3277. +             values.line_style = LineSolid;
  3278.            XChangeGC (mainDisplay, drawGC,
  3279.                  GCForeground | GCFunction | GCFillStyle | GCStipple |
  3280. !                GCLineWidth | GCLineStyle, &values);
  3281.   
  3282.            XDrawLines (mainDisplay, Win, drawGC, v, polygon_ptr->n,
  3283. ***************
  3284. *** 274,277 ****
  3285. --- 303,307 ----
  3286.      polygon_ptr->pen = penPat;
  3287.      polygon_ptr->curved = curSpline;
  3288. +    polygon_ptr->dash = curDash;
  3289.      obj_ptr = (struct ObjRec *) calloc (1, sizeof(struct ObjRec));
  3290.      obj_ptr->color = colorIndex;
  3291. ***************
  3292. *** 320,326 ****
  3293.      values.fill_style = FillSolid;
  3294.      values.line_width = 0;
  3295.   
  3296.      XChangeGC (mainDisplay, drawGC,
  3297. !          GCForeground | GCFunction | GCFillStyle | GCLineWidth,
  3298.            &values);
  3299.   
  3300. --- 350,357 ----
  3301.      values.fill_style = FillSolid;
  3302.      values.line_width = 0;
  3303. +    values.line_style = LineSolid;
  3304.   
  3305.      XChangeGC (mainDisplay, drawGC,
  3306. !          GCForeground | GCFunction | GCFillStyle | GCLineWidth | GCLineStyle,
  3307.            &values);
  3308.   
  3309. ***************
  3310. *** 450,461 ****
  3311.         default:
  3312.            CreatePolygonObj (num_pts);
  3313. !          if (topObj->detail.g->curved == LT_SPLINE)
  3314. !             RedrawAnArea (botObj, topObj->bbox.ltx-(1<<zoomScale),
  3315. !                   topObj->bbox.lty-(1<<zoomScale),
  3316. !                   topObj->bbox.rbx+(1<<zoomScale),
  3317. !                   topObj->bbox.rby+(1<<zoomScale));
  3318. !          else if (objFill != 0)
  3319. !             DrawPolygonObj (drawWindow, drawOrigX, drawOrigY, topObj);
  3320.            polygonDrawn = TRUE;
  3321.            SetFileModified (TRUE);
  3322. --- 481,488 ----
  3323.         default:
  3324.            CreatePolygonObj (num_pts);
  3325. !          RedrawAnArea (botObj, topObj->bbox.ltx-(1<<zoomScale),
  3326. !                topObj->bbox.lty-(1<<zoomScale),
  3327. !                topObj->bbox.rbx+(1<<zoomScale),
  3328. !                topObj->bbox.rby+(1<<zoomScale));
  3329.            polygonDrawn = TRUE;
  3330.            SetFileModified (TRUE);
  3331. ***************
  3332. *** 497,501 ****
  3333.   
  3334.      n = polygon_ptr->n;
  3335. !    fprintf (FP, "polygon(%s,%1d,[", colorMenuItems[ObjPtr->color],
  3336.            polygon_ptr->n);
  3337.      for (i = 0; i < n-1; i++)
  3338. --- 524,528 ----
  3339.   
  3340.      n = polygon_ptr->n;
  3341. !    fprintf (FP, "polygon('%s',%1d,[", colorMenuItems[ObjPtr->color],
  3342.            polygon_ptr->n);
  3343.      for (i = 0; i < n-1; i++)
  3344. ***************
  3345. *** 502,508 ****
  3346.         fprintf (FP, "%1d,%1d,", polygon_ptr->vlist[i].x, polygon_ptr->vlist[i].y);
  3347.   
  3348. !    fprintf (FP, "%1d,%1d],%1d,%1d,%1d,%1d,%1d,", polygon_ptr->vlist[n-1].x,
  3349.            polygon_ptr->vlist[n-1].y, polygon_ptr->fill, polygon_ptr->width,
  3350. !          polygon_ptr->pen, polygon_ptr->curved, ObjPtr->id);
  3351.      SaveAttrs (FP, ObjPtr->lattr);
  3352.      fprintf (FP, ")");
  3353. --- 529,535 ----
  3354.         fprintf (FP, "%1d,%1d,", polygon_ptr->vlist[i].x, polygon_ptr->vlist[i].y);
  3355.   
  3356. !    fprintf (FP, "%1d,%1d],%1d,%1d,%1d,%1d,%1d,%1d,", polygon_ptr->vlist[n-1].x,
  3357.            polygon_ptr->vlist[n-1].y, polygon_ptr->fill, polygon_ptr->width,
  3358. !          polygon_ptr->pen, polygon_ptr->curved, ObjPtr->id, polygon_ptr->dash);
  3359.      SaveAttrs (FP, ObjPtr->lattr);
  3360.      fprintf (FP, ")");
  3361. ***************
  3362. *** 518,522 ****
  3363.      char            color_str[20], * s;
  3364.      int            num_pts, ltx, lty, rbx, rby, x, y, fill, width, pen, w;
  3365. !    int            curved;
  3366.   
  3367.      * ObjPtr = (struct ObjRec *) calloc (1, sizeof(struct ObjRec));
  3368. --- 545,549 ----
  3369.      char            color_str[20], * s;
  3370.      int            num_pts, ltx, lty, rbx, rby, x, y, fill, width, pen, w;
  3371. !    int            curved, dash;
  3372.   
  3373.      * ObjPtr = (struct ObjRec *) calloc (1, sizeof(struct ObjRec));
  3374. ***************
  3375. *** 559,562 ****
  3376. --- 586,590 ----
  3377.         }
  3378.         (*ObjPtr)->id = objId++;
  3379. +       dash = 0;
  3380.      }
  3381.      else if (fileVersion <= 5)
  3382. ***************
  3383. *** 569,572 ****
  3384. --- 597,601 ----
  3385.         }
  3386.         (*ObjPtr)->id = objId++;
  3387. +       dash = 0;
  3388.      }
  3389.      else if (fileVersion <= 7)
  3390. ***************
  3391. *** 574,579 ****
  3392.         sscanf (s, "%d , %d , %d , %d", &fill, &width, &pen, &curved);
  3393.         (*ObjPtr)->id = objId++;
  3394.      }
  3395. !    else
  3396.      {
  3397.         sscanf (s, "%d , %d , %d , %d , %d", &fill, &width, &pen, &curved,
  3398. --- 603,609 ----
  3399.         sscanf (s, "%d , %d , %d , %d", &fill, &width, &pen, &curved);
  3400.         (*ObjPtr)->id = objId++;
  3401. +       dash = 0;
  3402.      }
  3403. !    else if (fileVersion <= 8)
  3404.      {
  3405.         sscanf (s, "%d , %d , %d , %d , %d", &fill, &width, &pen, &curved,
  3406. ***************
  3407. *** 580,584 ****
  3408. --- 610,621 ----
  3409.               &((*ObjPtr)->id));
  3410.         if ((*ObjPtr)->id >= objId) objId = (*ObjPtr)->id + 1;
  3411. +       dash = 0;
  3412.      }
  3413. +    else
  3414. +    {
  3415. +       sscanf (s, "%d , %d , %d , %d , %d , %d", &fill, &width, &pen, &curved,
  3416. +             &((*ObjPtr)->id), &dash);
  3417. +       if ((*ObjPtr)->id >= objId) objId = (*ObjPtr)->id + 1;
  3418. +    }
  3419.   
  3420.      polygon_ptr->vlist = v;
  3421. ***************
  3422. *** 590,593 ****
  3423. --- 627,631 ----
  3424.      polygon_ptr->pen = pen;
  3425.      polygon_ptr->curved = curved;
  3426. +    polygon_ptr->dash = dash;
  3427.      (*ObjPtr)->x = ltx;
  3428.      (*ObjPtr)->y = lty;
  3429. *** prtgif.c.orig    Mon Jan  7 13:06:15 1991
  3430. --- prtgif.c    Mon Jan  7 13:06:18 1991
  3431. ***************
  3432. *** 6,10 ****
  3433.   #ifndef lint
  3434.   static char RCSid[] =
  3435. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/prtgif.c,v 1.16 90/08/16 15:28:30 william Exp $";
  3436.   #endif
  3437.   
  3438. --- 6,10 ----
  3439.   #ifndef lint
  3440.   static char RCSid[] =
  3441. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/prtgif.c,v 1.17 90/11/01 13:49:48 william Exp $";
  3442.   #endif
  3443.   
  3444. ***************
  3445. *** 108,119 ****
  3446.      struct ObjRec    * obj_ptr;
  3447.      char         full_name[MAXPATHLENGTH];
  3448.      FILE            * fp;
  3449.   
  3450. !    strcpy (full_name, FileName);
  3451. !    strcat (full_name, ".obj");
  3452.   
  3453.      if ((fp = fopen (full_name, "r")) == NULL)
  3454.      {
  3455. !       printf ("Can not open '%s'.", full_name);
  3456.         return (FALSE);
  3457.      }
  3458. --- 108,123 ----
  3459.      struct ObjRec    * obj_ptr;
  3460.      char         full_name[MAXPATHLENGTH];
  3461. +    int            len;
  3462.      FILE            * fp;
  3463.   
  3464. !    len = strlen (FileName);
  3465. !    if (len >= 4 && strcmp (&FileName[len-4], ".obj") == 0)
  3466. !       strcpy (full_name, FileName);
  3467. !    else
  3468. !       sprintf (full_name, "%s.obj", FileName);
  3469.   
  3470.      if ((fp = fopen (full_name, "r")) == NULL)
  3471.      {
  3472. !       printf ("Can not open '%s'.\n", full_name);
  3473.         return (FALSE);
  3474.      }
  3475. *** raster.c.orig    Mon Jan  7 13:06:24 1991
  3476. --- raster.c    Mon Jan  7 13:06:26 1991
  3477. ***************
  3478. *** 6,10 ****
  3479.   #ifndef lint
  3480.   static char RCSid[] =
  3481. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/raster.c,v 1.7 90/10/27 16:09:36 william Exp $";
  3482.   #endif
  3483.   
  3484. --- 6,10 ----
  3485.   #ifndef lint
  3486.   static char RCSid[] =
  3487. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/raster.c,v 1.8 90/11/01 08:44:35 william Exp $";
  3488.   #endif
  3489.   
  3490. ***************
  3491. *** 82,85 ****
  3492. --- 82,86 ----
  3493.   #include "bitmaps/ld2.bm"
  3494.   #include "bitmaps/ld3.bm"
  3495. + #include "bitmaps/ld4.bm"
  3496.   
  3497.   #include "bitmaps/lw0s.bm"
  3498. ***************
  3499. *** 103,106 ****
  3500. --- 104,108 ----
  3501.   #include "bitmaps/ld2s.bm"
  3502.   #include "bitmaps/ld3s.bm"
  3503. + #include "bitmaps/ld4s.bm"
  3504.   
  3505.   #include "bitmaps/printer.bm"
  3506. ***************
  3507. *** 107,110 ****
  3508. --- 109,119 ----
  3509.   #include "bitmaps/latex.bm"
  3510.   
  3511. + #include "bitmaps/file.bm"
  3512. + #include "bitmaps/special.bm"
  3513. + #include "bitmaps/rotate_0.bm"
  3514. + #include "bitmaps/rotate_90.bm"
  3515. + #include "bitmaps/rotate_180.bm"
  3516. + #include "bitmaps/rotate_270.bm"
  3517.   GC    rasterGC;
  3518.   
  3519. ***************
  3520. *** 125,128 ****
  3521. --- 134,140 ----
  3522.   Pixmap    alignVertPixmap[MAXALIGNS];
  3523.   Pixmap    shortLineWidthPixmap[MAXLINEWIDTHS];
  3524. + Pixmap    filePixmap;
  3525. + Pixmap    specialPixmap;
  3526. + Pixmap    rotatePixmap[4];
  3527.   Pixmap    whereToPrintPixmap[2];
  3528.   Pixmap    shortLineTypePixmap[MAXLINETYPES];
  3529. ***************
  3530. *** 131,136 ****
  3531.   
  3532.   int    pat_w[MAXPATTERNS+1], pat_h[MAXPATTERNS+1];
  3533. ! int    dashListLength[MAXDASHES] = { 0, 2, 2, 4 };
  3534. ! char    * dashList[MAXDASHES] = {"","\004\004","\006\002","\012\002\002\002"};
  3535.   
  3536.   static char    * patData[MAXPATTERNS+1];
  3537. --- 143,149 ----
  3538.   
  3539.   int    pat_w[MAXPATTERNS+1], pat_h[MAXPATTERNS+1];
  3540. ! int    dashListLength[MAXDASHES] = { 0, 2, 2, 2, 4 };
  3541. ! char    * dashList[MAXDASHES] =
  3542. !       {"","\004\014","\010\010","\014\004","\024\004\004\004"};
  3543.   
  3544.   static char    * patData[MAXPATTERNS+1];
  3545. ***************
  3546. *** 238,249 ****
  3547.            lt1_bits, lt1_width, lt1_height);
  3548.   
  3549. ! /* dashPixmap[0] = XCreateBitmapFromData (mainDisplay, mainWindow, */
  3550. ! /*       ld0_bits, ld0_width, ld0_height); */
  3551. ! /* dashPixmap[1] = XCreateBitmapFromData (mainDisplay, mainWindow, */
  3552. ! /*       ld1_bits, ld1_width, ld1_height); */
  3553. ! /* dashPixmap[2] = XCreateBitmapFromData (mainDisplay, mainWindow, */
  3554. ! /*       ld2_bits, ld2_width, ld2_height); */
  3555. ! /* dashPixmap[3] = XCreateBitmapFromData (mainDisplay, mainWindow, */
  3556. ! /*       ld3_bits, ld3_width, ld3_height); */
  3557.   
  3558.      lineStylePixmap[0] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3559. --- 251,264 ----
  3560.            lt1_bits, lt1_width, lt1_height);
  3561.   
  3562. !    dashPixmap[0] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3563. !          ld0_bits, ld0_width, ld0_height);
  3564. !    dashPixmap[1] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3565. !          ld1_bits, ld1_width, ld1_height);
  3566. !    dashPixmap[2] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3567. !          ld2_bits, ld2_width, ld2_height);
  3568. !    dashPixmap[3] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3569. !          ld3_bits, ld3_width, ld3_height);
  3570. !    dashPixmap[4] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3571. !          ld4_bits, ld4_width, ld4_height);
  3572.   
  3573.      lineStylePixmap[0] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3574. ***************
  3575. *** 267,295 ****
  3576.            lt1_bits, lt1_width, lt1_height);
  3577.   
  3578. - /* lineStylePixmap[9] = XCreateBitmapFromData (mainDisplay, mainWindow, */
  3579. - /*       ld0_bits, ld0_width, ld0_height); */
  3580. - /* lineStylePixmap[10] = XCreateBitmapFromData (mainDisplay, mainWindow, */
  3581. - /*       ld1_bits, ld1_width, ld1_height); */
  3582. - /* lineStylePixmap[11] = XCreateBitmapFromData (mainDisplay, mainWindow, */
  3583. - /*       ld2_bits, ld2_width, ld2_height); */
  3584. - /* lineStylePixmap[12] = XCreateBitmapFromData (mainDisplay, mainWindow, */
  3585. - /*       ld3_bits, ld3_width, ld3_height); */
  3586. - /* lineStylePixmap[13] = XCreateBitmapFromData (mainDisplay, mainWindow, */
  3587. - /*       ls0_bits, ls0_width, ls0_height); */
  3588. - /* lineStylePixmap[14] = XCreateBitmapFromData (mainDisplay, mainWindow, */
  3589. - /*       ls1_bits, ls1_width, ls1_height); */
  3590. - /* lineStylePixmap[15] = XCreateBitmapFromData (mainDisplay, mainWindow, */
  3591. - /*       ls2_bits, ls2_width, ls2_height); */
  3592. - /* lineStylePixmap[16] = XCreateBitmapFromData (mainDisplay, mainWindow, */
  3593. - /*       ls3_bits, ls3_width, ls3_height); */
  3594.      lineStylePixmap[9] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3595. !          ls0_bits, ls0_width, ls0_height);
  3596.      lineStylePixmap[10] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3597. !          ls1_bits, ls1_width, ls1_height);
  3598.      lineStylePixmap[11] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3599. !          ls2_bits, ls2_width, ls2_height);
  3600.      lineStylePixmap[12] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3601.            ls3_bits, ls3_width, ls3_height);
  3602.   
  3603. --- 282,303 ----
  3604.            lt1_bits, lt1_width, lt1_height);
  3605.   
  3606.      lineStylePixmap[9] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3607. !          ld0_bits, ld0_width, ld0_height);
  3608.      lineStylePixmap[10] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3609. !          ld1_bits, ld1_width, ld1_height);
  3610.      lineStylePixmap[11] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3611. !          ld2_bits, ld2_width, ld2_height);
  3612.      lineStylePixmap[12] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3613. +          ld3_bits, ld3_width, ld3_height);
  3614. +    lineStylePixmap[13] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3615. +          ld4_bits, ld4_width, ld4_height);
  3616. +    lineStylePixmap[14] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3617. +          ls0_bits, ls0_width, ls0_height);
  3618. +    lineStylePixmap[15] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3619. +          ls1_bits, ls1_width, ls1_height);
  3620. +    lineStylePixmap[16] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3621. +          ls2_bits, ls2_width, ls2_height);
  3622. +    lineStylePixmap[17] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3623.            ls3_bits, ls3_width, ls3_height);
  3624.   
  3625. ***************
  3626. *** 303,306 ****
  3627. --- 311,329 ----
  3628.            ls3s_bits, ls3s_width, ls3s_height);
  3629.   
  3630. +    filePixmap = XCreateBitmapFromData (mainDisplay, mainWindow,
  3631. +          file_bits, file_width, file_height);
  3632. +    specialPixmap = XCreateBitmapFromData (mainDisplay, mainWindow,
  3633. +          special_bits, special_width, special_height);
  3634. +    rotatePixmap[0] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3635. +          rotate_0_bits, rotate_0_width, rotate_0_height);
  3636. +    rotatePixmap[1] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3637. +          rotate_90_bits, rotate_90_width, rotate_90_height);
  3638. +    rotatePixmap[2] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3639. +          rotate_180_bits, rotate_180_width, rotate_180_height);
  3640. +    rotatePixmap[3] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3641. +          rotate_270_bits, rotate_270_width, rotate_270_height);
  3642.      whereToPrintPixmap[PRINTER] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3643.            printer_bits, printer_width, printer_height);
  3644. ***************
  3645. *** 313,324 ****
  3646.            lt1s_bits, lt1s_width, lt1s_height);
  3647.   
  3648. ! /* shortDashPixmap[0] = XCreateBitmapFromData (mainDisplay, mainWindow, */
  3649. ! /*       ld0s_bits, ld0s_width, ld0s_height); */
  3650. ! /* shortDashPixmap[1] = XCreateBitmapFromData (mainDisplay, mainWindow, */
  3651. ! /*       ld1s_bits, ld1s_width, ld1s_height); */
  3652. ! /* shortDashPixmap[2] = XCreateBitmapFromData (mainDisplay, mainWindow, */
  3653. ! /*       ld2s_bits, ld2s_width, ld2s_height); */
  3654. ! /* shortDashPixmap[3] = XCreateBitmapFromData (mainDisplay, mainWindow, */
  3655. ! /*       ld3s_bits, ld3s_width, ld3s_height); */
  3656.   
  3657.      shortLineWidthPixmap[0] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3658. --- 336,349 ----
  3659.            lt1s_bits, lt1s_width, lt1s_height);
  3660.   
  3661. !    shortDashPixmap[0] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3662. !          ld0s_bits, ld0s_width, ld0s_height);
  3663. !    shortDashPixmap[1] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3664. !          ld1s_bits, ld1s_width, ld1s_height);
  3665. !    shortDashPixmap[2] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3666. !          ld2s_bits, ld2s_width, ld2s_height);
  3667. !    shortDashPixmap[3] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3668. !          ld3s_bits, ld3s_width, ld3s_height);
  3669. !    shortDashPixmap[4] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3670. !          ld4s_bits, ld4s_width, ld4s_height);
  3671.   
  3672.      shortLineWidthPixmap[0] = XCreateBitmapFromData (mainDisplay, mainWindow,
  3673. ***************
  3674. *** 354,358 ****
  3675.   {
  3676.      ShowMode ();
  3677. !    ShowColor ();
  3678.      ShowHoriAlign ();
  3679.      ShowVertAlign ();
  3680. --- 379,383 ----
  3681.   {
  3682.      ShowMode ();
  3683. !    ShowColor (FALSE);
  3684.      ShowHoriAlign ();
  3685.      ShowVertAlign ();
  3686. ***************
  3687. *** 359,366 ****
  3688.      ShowJust ();
  3689.      ShowCurFont ();
  3690.      ShowLineWidth ();
  3691. -    ShowWhereToPrint ();
  3692. -    ShowLineType ();
  3693.      ShowLineStyle ();
  3694.      ShowFill ();
  3695.      ShowPen ();
  3696. --- 384,395 ----
  3697.      ShowJust ();
  3698.      ShowCurFont ();
  3699. +    ShowRotate ();
  3700. +    ShowSpecial ();
  3701.      ShowLineWidth ();
  3702.      ShowLineStyle ();
  3703. +    ShowLineType ();
  3704. +    ShowDash ();
  3705. +    ShowWhereToPrint ();
  3706. +    ShowFile ();
  3707.      ShowFill ();
  3708.      ShowPen ();
  3709. ***************
  3710. *** 379,384 ****
  3711.      for (i = 0; i < MAXLINETYPES; i++)
  3712.         XFreePixmap (mainDisplay, lineTypePixmap[i]);
  3713. ! /* for (i = 0; i < MAXDASHES; i++) */
  3714. ! /*    XFreePixmap (mainDisplay, dashPixmap[i]); */
  3715.      for (i = 0; i < MAXJUSTS; i++) XFreePixmap (mainDisplay, justPixmap[i]);
  3716.      XFreePixmap (mainDisplay, alignHoriPixmap[0]);
  3717. --- 408,413 ----
  3718.      for (i = 0; i < MAXLINETYPES; i++)
  3719.         XFreePixmap (mainDisplay, lineTypePixmap[i]);
  3720. !    for (i = 0; i < MAXDASHES; i++)
  3721. !       XFreePixmap (mainDisplay, dashPixmap[i]);
  3722.      for (i = 0; i < MAXJUSTS; i++) XFreePixmap (mainDisplay, justPixmap[i]);
  3723.      XFreePixmap (mainDisplay, alignHoriPixmap[0]);
  3724. ***************
  3725. *** 389,392 ****
  3726. --- 418,425 ----
  3727.      for (i = 0; i < MAXLINEWIDTHS; i++)
  3728.         XFreePixmap (mainDisplay, shortLineWidthPixmap[i]);
  3729. +    XFreePixmap (mainDisplay, filePixmap);
  3730. +    XFreePixmap (mainDisplay, specialPixmap);
  3731. +    for (i = 0; i < 4; i++)
  3732. +       XFreePixmap (mainDisplay, rotatePixmap[i]);
  3733.      for (i = 0; i < 2; i++)
  3734.         XFreePixmap (mainDisplay, whereToPrintPixmap[i]);
  3735. ***************
  3736. *** 395,400 ****
  3737.      for (i = 0; i < MAXLINESTYLES; i++)
  3738.         XFreePixmap (mainDisplay, shortLineStylePixmap[i]);
  3739. ! /* for (i = 0; i < MAXDASHES; i++) */
  3740. ! /*    XFreePixmap (mainDisplay, shortDashPixmap[i]); */
  3741.   
  3742.      XFreeGC (mainDisplay, rasterGC);
  3743. --- 428,433 ----
  3744.      for (i = 0; i < MAXLINESTYLES; i++)
  3745.         XFreePixmap (mainDisplay, shortLineStylePixmap[i]);
  3746. !    for (i = 0; i < MAXDASHES; i++)
  3747. !       XFreePixmap (mainDisplay, shortDashPixmap[i]);
  3748.   
  3749.      XFreeGC (mainDisplay, rasterGC);
  3750. *** select.c.orig    Mon Jan  7 13:06:39 1991
  3751. --- select.c    Mon Jan  7 13:06:41 1991
  3752. ***************
  3753. *** 6,10 ****
  3754.   #ifndef lint
  3755.   static char RCSid[] =
  3756. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/select.c,v 1.7 90/07/27 14:37:59 william Exp $";
  3757.   #endif
  3758.   
  3759. --- 6,10 ----
  3760.   #ifndef lint
  3761.   static char RCSid[] =
  3762. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/select.c,v 1.9 90/11/01 18:08:44 william Exp $";
  3763.   #endif
  3764.   
  3765. ***************
  3766. *** 624,639 ****
  3767.   }
  3768.   
  3769. ! void CopySelToCut ()
  3770.   {
  3771. !    register struct SelRec    * sel_ptr, * top_cut_ptr, * bot_cut_ptr;
  3772. !    struct SelRec        * top_sel_ptr, * bot_sel_ptr;
  3773.   
  3774. -    if (topSel == NULL) return;
  3775. -    JustDupSelObj (&top_sel_ptr, &bot_sel_ptr);
  3776.      top_cut_ptr = (struct SelRec *) calloc (2, sizeof (struct SelRec));
  3777.      bot_cut_ptr = &top_cut_ptr[1];
  3778. !    top_cut_ptr->next = top_sel_ptr; bot_cut_ptr->next = bot_sel_ptr;
  3779.      top_cut_ptr->prev = topCutSel; bot_cut_ptr->prev = botCutSel;
  3780.      topCutSel = top_cut_ptr; botCutSel = bot_cut_ptr;
  3781. --- 624,635 ----
  3782.   }
  3783.   
  3784. ! void PushToCutBuffer (TopSelPtr, BotSelPtr)
  3785. !    struct SelRec    * TopSelPtr, * BotSelPtr;
  3786.   {
  3787. !    register struct SelRec    * top_cut_ptr, * bot_cut_ptr;
  3788.   
  3789.      top_cut_ptr = (struct SelRec *) calloc (2, sizeof (struct SelRec));
  3790.      bot_cut_ptr = &top_cut_ptr[1];
  3791. !    top_cut_ptr->next = TopSelPtr; bot_cut_ptr->next = BotSelPtr;
  3792.      top_cut_ptr->prev = topCutSel; bot_cut_ptr->prev = botCutSel;
  3793.      topCutSel = top_cut_ptr; botCutSel = bot_cut_ptr;
  3794. ***************
  3795. *** 640,649 ****
  3796.   }
  3797.   
  3798. ! void DelAllSelObj ()
  3799.   {
  3800. !    register struct SelRec    * sel_ptr, * top_cut_ptr, * bot_cut_ptr;
  3801.   
  3802.      if (topSel == NULL) return;
  3803.   
  3804.      HighLightReverse ();
  3805.      tmpTopObj = tmpBotObj = NULL;
  3806. --- 636,653 ----
  3807.   }
  3808.   
  3809. ! void CopySelToCut ()
  3810.   {
  3811. !    struct SelRec    * top_sel_ptr, * bot_sel_ptr;
  3812.   
  3813.      if (topSel == NULL) return;
  3814.   
  3815. +    JustDupSelObj (&top_sel_ptr, &bot_sel_ptr);
  3816. +    PushToCutBuffer (top_sel_ptr, bot_sel_ptr);
  3817. + }
  3818. + void DelAllSelObj ()
  3819. + {
  3820. +    if (topSel == NULL) return;
  3821.      HighLightReverse ();
  3822.      tmpTopObj = tmpBotObj = NULL;
  3823. ***************
  3824. *** 650,658 ****
  3825.      BreakSel ();
  3826.   
  3827. !    top_cut_ptr = (struct SelRec *) calloc (2, sizeof (struct SelRec));
  3828. !    bot_cut_ptr = &top_cut_ptr[1];
  3829. !    top_cut_ptr->next = topSel; bot_cut_ptr->next = botSel;
  3830. !    top_cut_ptr->prev = topCutSel; bot_cut_ptr->prev = botCutSel;
  3831. !    topCutSel = top_cut_ptr; botCutSel = bot_cut_ptr;
  3832.   
  3833.      topSel = botSel = NULL;
  3834. --- 654,658 ----
  3835.      BreakSel ();
  3836.   
  3837. !    PushToCutBuffer (topSel, botSel);
  3838.   
  3839.      topSel = botSel = NULL;
  3840. ---------------------------------> cut here <---------------------------------
  3841. -- 
  3842. Bill Cheng // UCLA Computer Science Department // (213) 206-7135
  3843. 3277 Boelter Hall // Los Angeles, California 90024 // USA
  3844. william@CS.UCLA.EDU      ...!{uunet|ucbvax}!cs.ucla.edu!william
  3845.  
  3846. From news@CS.UCLA.EDU Mon Jan  7 18:58:35 1991
  3847. Received: from Shemp.CS.UCLA.EDU by uunet.UU.NET (5.61/1.14) with SMTP 
  3848.     id AA06690; Mon, 7 Jan 91 18:58:25 -0500
  3849. Received: by shemp.cs.ucla.edu
  3850.     (Sendmail 5.61a+YP/2.33) id AA05177;
  3851.     Mon, 7 Jan 91 15:57:54 -0800
  3852. Newsgroups: comp.sources.x
  3853. Path: oahu.cs.ucla.edu!william
  3854. From: william@CS.UCLA.EDU (William Cheng)
  3855. Subject: v07i056-076: tgif, Patch7 (tgif-1.16 => tgif-1.19), Part04/05
  3856. Message-Id: <1991Jan7.235737.5120@cs.ucla.edu>
  3857. Followup-To: william@cs.ucla.edu
  3858. Originator: william@oahu.cs.ucla.edu
  3859. Keywords: draw, tool, postscript, latex, hierarchical, x11, xlib, wysiwyg
  3860. Sender: news@cs.ucla.edu (Mr. News)
  3861. Nntp-Posting-Host: oahu.cs.ucla.edu
  3862. Organization: UCLA Computer Science Department
  3863. Date: Mon, 7 Jan 91 23:57:37 GMT
  3864. Patch-To: tgif: Volume 7, Issues 56-76
  3865. Apparently-To: comp-sources-x@uunet.uu.net
  3866. Status: O
  3867.  
  3868. ---------------------------------> cut here <---------------------------------
  3869. *** setup.c.orig    Mon Jan  7 13:06:48 1991
  3870. --- setup.c    Mon Jan  7 13:06:50 1991
  3871. ***************
  3872. *** 6,10 ****
  3873.   #ifndef lint
  3874.   static char RCSid[] =
  3875. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/setup.c,v 1.14 90/10/22 10:21:53 william Exp $";
  3876.   #endif
  3877.   
  3878. --- 6,10 ----
  3879.   #ifndef lint
  3880.   static char RCSid[] =
  3881. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/setup.c,v 1.16 90/11/02 09:20:33 william Exp $";
  3882.   #endif
  3883.   
  3884. ***************
  3885. *** 39,43 ****
  3886.   #define DRAW_WINDOW_W (5*PIX_PER_INCH)
  3887.   #define DRAW_WINDOW_H (5*PIX_PER_INCH)
  3888. ! #define CHOICE_WINDOW_W (6*CHOICE_IMAGE_W)
  3889.   #define CHOICE_WINDOW_H (2*CHOICE_IMAGE_H)
  3890.   #define VSBAR_H (DRAW_WINDOW_H+RULER_W+2*BRDR_W)
  3891. --- 39,43 ----
  3892.   #define DRAW_WINDOW_W (5*PIX_PER_INCH)
  3893.   #define DRAW_WINDOW_H (5*PIX_PER_INCH)
  3894. ! #define CHOICE_WINDOW_W (8*CHOICE_IMAGE_W)
  3895.   #define CHOICE_WINDOW_H (2*CHOICE_IMAGE_H)
  3896.   #define VSBAR_H (DRAW_WINDOW_H+RULER_W+2*BRDR_W)
  3897. ***************
  3898. *** 247,257 ****
  3899.            strcpy (homeDir, c_ptr);
  3900.   
  3901. !    if ((c_ptr = getenv ("PWD")) == NULL)
  3902. !       strcpy (bootDir, ".");
  3903. !    else
  3904. !       if (strlen (c_ptr) >= MAXPATHLENGTH-1)
  3905. !          strcpy (bootDir, ".");
  3906. !       else
  3907. !          strcpy (bootDir, c_ptr);
  3908.   
  3909.      sizehints.flags = PPosition | PSize | PMinSize;
  3910. --- 247,251 ----
  3911.            strcpy (homeDir, c_ptr);
  3912.   
  3913. !    if (getwd (bootDir) == NULL) strcpy (bootDir, ".");
  3914.   
  3915.      sizehints.flags = PPosition | PSize | PMinSize;
  3916. *** special.c.orig    Mon Jan  7 13:06:58 1991
  3917. --- special.c    Mon Jan  7 13:07:02 1991
  3918. ***************
  3919. *** 6,10 ****
  3920.   #ifndef lint
  3921.   static char RCSid[] =
  3922. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/special.c,v 1.13 90/10/25 14:57:35 william Exp $";
  3923.   #endif
  3924.   
  3925. --- 6,10 ----
  3926.   #ifndef lint
  3927.   static char RCSid[] =
  3928. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/special.c,v 1.14 90/11/01 18:09:43 william Exp $";
  3929.   #endif
  3930.   
  3931. ***************
  3932. *** 100,103 ****
  3933. --- 100,125 ----
  3934.      }
  3935.      return (NULL);
  3936. + }
  3937. + struct ObjRec * GetObjRepresentation (PathName, SymName)
  3938. +    char    * PathName, * SymName;
  3939. + {
  3940. +    char            file_name[MAXPATHLENGTH];
  3941. +    struct ObjRec    * obj_ptr;
  3942. +    FILE            * fp;
  3943. +    sprintf (file_name, "%s/%s.sym", PathName, SymName);
  3944. +    if ((fp = fopen (file_name, "r")) == NULL)
  3945. +    { printf ("Can not open '%s'\n", file_name); return (NULL); }
  3946. +    if ((obj_ptr = ReadSymbol (fp)) != NULL)
  3947. +    {
  3948. +       obj_ptr->id = objId++;
  3949. +       obj_ptr->dirty = FALSE;
  3950. +       strcpy (obj_ptr->detail.r->s, SymName);
  3951. +       AdjObjBBox (obj_ptr);
  3952. +    }
  3953. +    fclose (fp);
  3954. +    return (obj_ptr);
  3955.   }
  3956.   
  3957. *** spline.c.orig    Mon Jan  7 13:07:12 1991
  3958. --- spline.c    Mon Jan  7 13:07:14 1991
  3959. ***************
  3960. *** 6,10 ****
  3961.   #ifndef lint
  3962.   static char RCSid[] =
  3963. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/spline.c,v 1.3 90/07/16 10:58:15 william Exp $";
  3964.   #endif
  3965.   
  3966. --- 6,10 ----
  3967.   #ifndef lint
  3968.   static char RCSid[] =
  3969. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/spline.c,v 1.5 90/11/01 08:41:00 william Exp $";
  3970.   #endif
  3971.   
  3972. ***************
  3973. *** 164,170 ****
  3974.   static XPoint arrow_v[4];
  3975.   
  3976. ! void DrawSplinePolyObj (Win, XOff, YOff, Fill, Width, Pen, Pixel, PolyPtr)
  3977.      Window        Win;
  3978. !    int            XOff, YOff, Fill, Width, Pen, Pixel;
  3979.      struct PolyRec    * PolyPtr;
  3980.   {
  3981. --- 164,170 ----
  3982.   static XPoint arrow_v[4];
  3983.   
  3984. ! void DrawSplinePolyObj (Win, XOff, YOff, Fill, Width, Pen, Dash, Pixel, PolyPtr)
  3985.      Window        Win;
  3986. !    int            XOff, YOff, Fill, Width, Pen, Dash, Pixel;
  3987.      struct PolyRec    * PolyPtr;
  3988.   {
  3989. ***************
  3990. *** 199,205 ****
  3991.         values.stipple = patPixmap[Pen];
  3992.         values.line_width = widthOfLine[Width] >> zoomScale;
  3993.         XChangeGC (mainDisplay, drawGC,
  3994. !             GCForeground | GCFunction | GCFillStyle | GCStipple | GCLineWidth,
  3995. !             &values);
  3996.   
  3997.         XDrawLines (mainDisplay, Win, drawGC, sv, sn, CoordModeOrigin);
  3998. --- 199,213 ----
  3999.         values.stipple = patPixmap[Pen];
  4000.         values.line_width = widthOfLine[Width] >> zoomScale;
  4001. +       if (Dash != 0)
  4002. +       {
  4003. +          XSetDashes (mainDisplay, drawGC, 0, dashList[Dash],
  4004. +                dashListLength[Dash]);
  4005. +          values.line_style = LineOnOffDash;
  4006. +       }
  4007. +       else
  4008. +          values.line_style = LineSolid;
  4009.         XChangeGC (mainDisplay, drawGC,
  4010. !             GCForeground | GCFunction | GCFillStyle | GCStipple | GCLineWidth |
  4011. !             GCLineStyle, &values);
  4012.   
  4013.         XDrawLines (mainDisplay, Win, drawGC, sv, sn, CoordModeOrigin);
  4014. ***************
  4015. *** 280,286 ****
  4016.   }
  4017.   
  4018. ! void DrawSplinePolygonObj (Win, XOff, YOff, Fill, Width, Pen, Pixel, PolygonPtr)
  4019.      Window        Win;
  4020. !    int            XOff, YOff, Fill, Width, Pen, Pixel;
  4021.      struct PolygonRec    * PolygonPtr;
  4022.   {
  4023. --- 288,294 ----
  4024.   }
  4025.   
  4026. ! void DrawSplinePolygonObj (Win,XOff,YOff,Fill,Width,Pen,Dash,Pixel,PolygonPtr)
  4027.      Window        Win;
  4028. !    int            XOff, YOff, Fill, Width, Pen, Dash, Pixel;
  4029.      struct PolygonRec    * PolygonPtr;
  4030.   {
  4031. ***************
  4032. *** 308,314 ****
  4033.         values.stipple = patPixmap[Pen];
  4034.         values.line_width = widthOfLine[Width] >> zoomScale;
  4035.         XChangeGC (mainDisplay, drawGC,
  4036. !             GCForeground | GCFunction | GCFillStyle | GCStipple | GCLineWidth,
  4037. !             &values);
  4038.   
  4039.         XDrawLines (mainDisplay, Win, drawGC, sv, sn, CoordModeOrigin);
  4040. --- 316,330 ----
  4041.         values.stipple = patPixmap[Pen];
  4042.         values.line_width = widthOfLine[Width] >> zoomScale;
  4043. +       if (Dash != 0)
  4044. +       {
  4045. +          XSetDashes (mainDisplay, drawGC, 0, dashList[Dash],
  4046. +                dashListLength[Dash]);
  4047. +          values.line_style = LineOnOffDash;
  4048. +       }
  4049. +       else
  4050. +          values.line_style = LineSolid;
  4051.         XChangeGC (mainDisplay, drawGC,
  4052. !             GCForeground | GCFunction | GCFillStyle | GCStipple | GCLineWidth |
  4053. !             GCLineStyle, &values);
  4054.   
  4055.         XDrawLines (mainDisplay, Win, drawGC, sv, sn, CoordModeOrigin);
  4056. *** stk.c.orig    Mon Jan  7 13:07:19 1991
  4057. --- stk.c    Mon Jan  7 13:07:21 1991
  4058. ***************
  4059. *** 6,10 ****
  4060.   #ifndef lint
  4061.   static char RCSid[] =
  4062. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/stk.c,v 1.10 90/10/27 15:09:07 william Exp $";
  4063.   #endif
  4064.   
  4065. --- 6,10 ----
  4066.   #ifndef lint
  4067.   static char RCSid[] =
  4068. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/stk.c,v 1.11 90/11/06 16:42:39 william Exp $";
  4069.   #endif
  4070.   
  4071. ***************
  4072. *** 125,128 ****
  4073. --- 125,129 ----
  4074.      CleanUpDrawingWindow ();
  4075.      XClearWindow (mainDisplay, drawWindow);
  4076. +    SetFileModified (FALSE);
  4077.   
  4078.      while (ReadObj (fp, &obj_ptr, FALSE))
  4079. ***************
  4080. *** 146,150 ****
  4081.      curFileDefined = TRUE;
  4082.   
  4083. -    SetFileModified (FALSE);
  4084.      sprintf (s, "Current file is '%s'.", file_name);
  4085.      Msg (s);
  4086. --- 147,150 ----
  4087. *** text.c.orig    Mon Jan  7 13:08:02 1991
  4088. --- text.c    Mon Jan  7 13:08:07 1991
  4089. ***************
  4090. *** 6,10 ****
  4091.   #ifndef lint
  4092.   static char RCSid[] =
  4093. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/text.c,v 1.18 90/08/21 16:24:22 william Exp $";
  4094.   #endif
  4095.   
  4096. --- 6,10 ----
  4097.   #ifndef lint
  4098.   static char RCSid[] =
  4099. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/text.c,v 1.22 90/11/10 13:51:14 william Exp $";
  4100.   #endif
  4101.   
  4102. ***************
  4103. *** 125,128 ****
  4104. --- 125,129 ----
  4105.   static Pixmap    textBackingPixmap;
  4106.   static int    textBackingPixmapSize = INVALID;
  4107. + static GC    rotateGC = NULL;
  4108.   
  4109.   void CleanUpText ()
  4110. ***************
  4111. *** 133,136 ****
  4112. --- 134,138 ----
  4113.         textBackingPixmapSize = INVALID;
  4114.      }
  4115. +    if (rotateGC != NULL) XFreeGC (mainDisplay, rotateGC);
  4116.   }
  4117.   
  4118. ***************
  4119. *** 265,278 ****
  4120.               textBackingPixmapSize = max(w,h);
  4121.            }
  4122.   
  4123. !          XSetForeground (mainDisplay, defaultGC, 0);
  4124. !          XFillRectangle (mainDisplay, textBackingPixmap, defaultGC, 0, 0, w, h);
  4125. !          XSetForeground (mainDisplay, defaultGC, myFgPixel);
  4126.   
  4127. !          XSetFont (mainDisplay, revDefaultGC, canvasFontPtr->fid);
  4128. !          XDrawImageString (mainDisplay, textBackingPixmap, revDefaultGC, 0,
  4129.                  canvasFontAsc, Str, len);
  4130.            from_image = XGetImage (mainDisplay, textBackingPixmap, 0, 0, w, h, 1,
  4131. !                XYPixmap);
  4132.   
  4133.            values.foreground = colorPixels[ColorIndex];
  4134. --- 267,290 ----
  4135.               textBackingPixmapSize = max(w,h);
  4136.            }
  4137. +          if (rotateGC == NULL)
  4138. +          {
  4139. +             values.foreground = 1;
  4140. +             values.background = 0;
  4141. +             values.fill_style = FillSolid;
  4142. +             values.function = GXcopy;
  4143. +             rotateGC = XCreateGC (mainDisplay, drawWindow,
  4144. +                   GCForeground | GCBackground | GCFillStyle | GCFunction,
  4145. +                   &values);
  4146. +          }
  4147.   
  4148. !          XSetForeground (mainDisplay, rotateGC, 0);
  4149. !          XFillRectangle (mainDisplay, textBackingPixmap, rotateGC, 0, 0, w, h);
  4150. !          XSetForeground (mainDisplay, rotateGC, 1);
  4151.   
  4152. !          XSetFont (mainDisplay, rotateGC, canvasFontPtr->fid);
  4153. !          XDrawString (mainDisplay, textBackingPixmap, rotateGC, 0,
  4154.                  canvasFontAsc, Str, len);
  4155.            from_image = XGetImage (mainDisplay, textBackingPixmap, 0, 0, w, h, 1,
  4156. !                ZPixmap);
  4157.   
  4158.            values.foreground = colorPixels[ColorIndex];
  4159. ***************
  4160. *** 592,596 ****
  4161.            PopCurFont ();
  4162.            ShowJust ();
  4163. !          ShowColor ();
  4164.            ShowCurFont ();
  4165.            editingText = FALSE;
  4166. --- 604,608 ----
  4167.            PopCurFont ();
  4168.            ShowJust ();
  4169. !          ShowColor (FALSE);
  4170.            ShowCurFont ();
  4171.            editingText = FALSE;
  4172. ***************
  4173. *** 674,678 ****
  4174.         PopCurFont ();
  4175.         ShowJust ();
  4176. !       ShowColor ();
  4177.         ShowCurFont ();
  4178.         editingText = FALSE;
  4179. --- 686,690 ----
  4180.         PopCurFont ();
  4181.         ShowJust ();
  4182. !       ShowColor (FALSE);
  4183.         ShowCurFont ();
  4184.         editingText = FALSE;
  4185. ***************
  4186. *** 811,815 ****
  4187.               ShowPen ();
  4188.               colorIndex = obj_ptr->color;
  4189. !             ShowColor ();
  4190.               ShowCurFont ();
  4191.   
  4192. --- 823,827 ----
  4193.               ShowPen ();
  4194.               colorIndex = obj_ptr->color;
  4195. !             ShowColor (FALSE);
  4196.               ShowCurFont ();
  4197.   
  4198. ***************
  4199. *** 1375,1379 ****
  4200.      int                PRTGIF;
  4201.   {
  4202. !    int            x, y, font_size, xinc, yinc;
  4203.      struct StrRec    * s_ptr;
  4204.      struct TextRec    * text_ptr = ObjPtr->detail.t;
  4205. --- 1387,1391 ----
  4206.      int                PRTGIF;
  4207.   {
  4208. !    int            x, y, font_size, xinc, yinc, color_index;
  4209.      struct StrRec    * s_ptr;
  4210.      struct TextRec    * text_ptr = ObjPtr->detail.t;
  4211. ***************
  4212. *** 1406,1409 ****
  4213. --- 1418,1430 ----
  4214.      y = ObjPtr->y;
  4215.   
  4216. +    if (colorDump)
  4217. +    {
  4218. +       color_index = ObjPtr->color;
  4219. +       fprintf (FP, "%.3f %.3f %.3f setrgbcolor\n",
  4220. +             ((float)tgifColors[color_index].red/maxRGB),
  4221. +             ((float)tgifColors[color_index].green/maxRGB),
  4222. +             ((float)tgifColors[color_index].blue/maxRGB));
  4223. +    }
  4224.      if (curFont == FONT_SYM)
  4225.      {
  4226. ***************
  4227. *** 1555,1558 ****
  4228. --- 1576,1580 ----
  4229.      }
  4230.   
  4231. +    if (curFontDPI != text_ptr->dpi) text_ptr->dpi = curFontDPI;
  4232.      RestoreCurFont ();
  4233.   }
  4234. ***************
  4235. *** 1652,1656 ****
  4236.      register struct StrRec    * s_ptr;
  4237.   
  4238. !    fprintf (FP, "text(%s,", colorMenuItems[ObjPtr->color]);
  4239.      fprintf (FP, "%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,[\n",
  4240.            ObjPtr->x, ObjPtr->y, t_ptr->font, t_ptr->style, t_ptr->size,
  4241. --- 1674,1678 ----
  4242.      register struct StrRec    * s_ptr;
  4243.   
  4244. !    fprintf (FP, "text('%s',", colorMenuItems[ObjPtr->color]);
  4245.      fprintf (FP, "%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,[\n",
  4246.            ObjPtr->x, ObjPtr->y, t_ptr->font, t_ptr->style, t_ptr->size,
  4247. ***************
  4248. *** 1793,1797 ****
  4249.      (*ObjPtr)->detail.t = text_ptr;
  4250.   
  4251. !    if (!PRTGIF) RestoreCurFont ();
  4252.   }
  4253.   
  4254. --- 1815,1823 ----
  4255.      (*ObjPtr)->detail.t = text_ptr;
  4256.   
  4257. !    if (!PRTGIF)
  4258. !    {
  4259. !       if (curFontDPI != text_ptr->dpi) text_ptr->dpi = curFontDPI;
  4260. !       RestoreCurFont ();
  4261. !    }
  4262.   }
  4263.   
  4264. ***************
  4265. *** 1806,1810 ****
  4266.            PopCurFont ();
  4267.            ShowJust ();
  4268. !          ShowColor ();
  4269.            ShowCurFont ();
  4270.         }
  4271. --- 1832,1836 ----
  4272.            PopCurFont ();
  4273.            ShowJust ();
  4274. !          ShowColor (FALSE);
  4275.            ShowCurFont ();
  4276.         }
  4277. *** version.c.orig    Mon Jan  7 13:08:16 1991
  4278. --- version.c    Mon Jan  7 13:08:17 1991
  4279. ***************
  4280. *** 6,11 ****
  4281.   #ifndef lint
  4282.   static char RCSid[] =
  4283. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/version.c,v 1.20 90/10/27 15:40:59 william Exp $";
  4284.   #endif
  4285.   
  4286. ! char    * version_string = "1.16";
  4287. --- 6,11 ----
  4288.   #ifndef lint
  4289.   static char RCSid[] =
  4290. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/version.c,v 1.23 90/11/10 13:53:37 william Exp $";
  4291.   #endif
  4292.   
  4293. ! char    * version_string = "1.19";
  4294. *** choice.e.orig    Mon Jan  7 13:08:21 1991
  4295. --- choice.e    Mon Jan  7 13:08:22 1991
  4296. ***************
  4297. *** 4,8 ****
  4298.    * Copyright (C) 1989, William Cheng.
  4299.    *
  4300. !  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/choice.e,v 1.4 90/10/26 18:35:33 william Exp $
  4301.    */
  4302.   
  4303. --- 4,8 ----
  4304.    * Copyright (C) 1989, William Cheng.
  4305.    *
  4306. !  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/choice.e,v 1.6 90/10/30 16:35:47 william Exp $
  4307.    */
  4308.   
  4309. ***************
  4310. *** 18,21 ****
  4311. --- 18,25 ----
  4312.   extern void    ShowCurFont ();
  4313.   extern void    ShowCurFontDPI ();
  4314. + extern void    ShowDash ();
  4315. + extern void    ShowFile ();
  4316. + extern void    ShowSpecial ();
  4317. + extern void    ShowRotate ();
  4318.   extern void    ShowLineWidth ();
  4319.   extern void    ShowWhereToPrint ();
  4320. *** edit.e.orig    Mon Jan  7 13:08:25 1991
  4321. --- edit.e    Mon Jan  7 13:08:26 1991
  4322. ***************
  4323. *** 4,8 ****
  4324.    * Copyright (C) 1989, William Cheng.
  4325.    *
  4326. !  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/edit.e,v 1.2 90/07/04 21:07:20 william Exp $
  4327.    */
  4328.   
  4329. --- 4,8 ----
  4330.    * Copyright (C) 1989, William Cheng.
  4331.    *
  4332. !  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/edit.e,v 1.3 90/11/01 15:19:52 william Exp $
  4333.    */
  4334.   
  4335. ***************
  4336. *** 13,14 ****
  4337. --- 13,15 ----
  4338.   extern void    BackProc ();
  4339.   extern void    ArrangeMenu ();
  4340. + extern void    UpdateSymbols ();
  4341. *** font.e.orig    Mon Jan  7 13:08:30 1991
  4342. --- font.e    Mon Jan  7 13:08:30 1991
  4343. ***************
  4344. *** 4,8 ****
  4345.    * Copyright (C) 1989, William Cheng.
  4346.    *
  4347. !  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/font.e,v 1.4 90/08/15 16:58:35 william Exp $
  4348.    */
  4349.   
  4350. --- 4,8 ----
  4351.    * Copyright (C) 1989, William Cheng.
  4352.    *
  4353. !  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/font.e,v 1.5 90/10/30 19:33:51 william Exp $
  4354.    */
  4355.   
  4356. ***************
  4357. *** 46,49 ****
  4358. --- 46,51 ----
  4359.   extern void    ChangeFont ();
  4360.   extern void    FontMenu ();
  4361. + extern void    ChangeFontDPI ();
  4362. + extern void    FontDPIMenu ();
  4363.   extern void    SaveCurFont ();
  4364.   extern void    RestoreCurFont ();
  4365. *** grid.e.orig    Mon Jan  7 13:08:35 1991
  4366. --- grid.e    Mon Jan  7 13:08:35 1991
  4367. ***************
  4368. *** 4,8 ****
  4369.    * Copyright (C) 1989, William Cheng.
  4370.    *
  4371. !  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/grid.e,v 1.3 90/07/16 10:18:50 william Exp $
  4372.    */
  4373.   
  4374. --- 4,8 ----
  4375.    * Copyright (C) 1989, William Cheng.
  4376.    *
  4377. !  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/grid.e,v 1.7 90/10/30 16:07:25 william Exp $
  4378.    */
  4379.   
  4380. ***************
  4381. *** 20,23 ****
  4382. --- 20,25 ----
  4383.   extern void    ToggleGridShown ();
  4384.   extern void    ToggleSnapOn ();
  4385. + extern void    ToggleWhereToPrint ();
  4386. + extern void    ToggleColorPostScript ();
  4387.   extern void    ZoomIn ();
  4388.   extern void    ZoomOut ();
  4389. *** names.e.orig    Mon Jan  7 13:08:40 1991
  4390. --- names.e    Mon Jan  7 13:08:41 1991
  4391. ***************
  4392. *** 4,8 ****
  4393.    * Copyright (C) 1989, William Cheng.
  4394.    *
  4395. !  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/names.e,v 1.12 90/10/25 14:58:59 william Exp $
  4396.    */
  4397.   
  4398. --- 4,8 ----
  4399.    * Copyright (C) 1989, William Cheng.
  4400.    *
  4401. !  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/names.e,v 1.17 90/11/07 01:26:37 william Exp $
  4402.    */
  4403.   
  4404. ***************
  4405. *** 21,23 ****
  4406. --- 21,25 ----
  4407.   extern int    SelectDomain ();
  4408.   extern void    SetCurDir ();
  4409. + extern int    NameInCurDir ();
  4410. + extern int    DirInSymPath ();
  4411.   extern int    GetSymbolPath ();
  4412. *** raster.e.orig    Mon Jan  7 13:08:45 1991
  4413. --- raster.e    Mon Jan  7 13:08:46 1991
  4414. ***************
  4415. *** 4,8 ****
  4416.    * Copyright (C) 1989, William Cheng.
  4417.    *
  4418. !  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/raster.e,v 1.4 90/10/26 18:17:39 william Exp $
  4419.    */
  4420.   
  4421. --- 4,8 ----
  4422.    * Copyright (C) 1989, William Cheng.
  4423.    *
  4424. !  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/raster.e,v 1.7 90/10/30 16:31:15 william Exp $
  4425.    */
  4426.   
  4427. ***************
  4428. *** 25,28 ****
  4429. --- 25,31 ----
  4430.   extern Pixmap    alignHoriPixmap[];
  4431.   extern Pixmap    alignVertPixmap[];
  4432. + extern Pixmap    filePixmap;
  4433. + extern Pixmap    specialPixmap;
  4434. + extern Pixmap    rotatePixmap[];
  4435.   extern Pixmap    whereToPrintPixmap[];
  4436.   extern Pixmap    shortLineWidthPixmap[];
  4437. ***************
  4438. *** 32,36 ****
  4439.   
  4440.   extern int    pat_w[], pat_h[];
  4441. ! extern int    *dashListLength[];
  4442.   extern char    *dashList[];
  4443.   
  4444. --- 35,39 ----
  4445.   
  4446.   extern int    pat_w[], pat_h[];
  4447. ! extern int    dashListLength[];
  4448.   extern char    *dashList[];
  4449.   
  4450. *** select.e.orig    Mon Jan  7 13:08:49 1991
  4451. --- select.e    Mon Jan  7 13:08:50 1991
  4452. ***************
  4453. *** 4,8 ****
  4454.    * Copyright (C) 1989, William Cheng.
  4455.    *
  4456. !  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/select.e,v 1.2 90/07/06 18:02:44 william Exp $
  4457.    */
  4458.   
  4459. --- 4,8 ----
  4460.    * Copyright (C) 1989, William Cheng.
  4461.    *
  4462. !  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/select.e,v 1.3 90/11/01 16:42:13 william Exp $
  4463.    */
  4464.   
  4465. ***************
  4466. *** 23,26 ****
  4467. --- 23,27 ----
  4468.   extern void    DelAllCutSel ();
  4469.   extern void    UndoDelete ();
  4470. + extern void    PushToCutBuffer ();
  4471.   extern void    CopySelToCut ();
  4472.   extern void    DelAllSelObj ();
  4473. *** special.e.orig    Mon Jan  7 13:08:55 1991
  4474. --- special.e    Mon Jan  7 13:08:56 1991
  4475. ***************
  4476. *** 4,11 ****
  4477.    * Copyright (C) 1989, William Cheng.
  4478.    *
  4479. !  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/special.e,v 1.1 90/04/01 22:17:22 william Exp $
  4480.    */
  4481.   
  4482.   extern struct ObjRec    * ReadSymbol ();
  4483.   extern void    PlaceTopObj ();
  4484.   extern void    Instantiate ();
  4485. --- 4,12 ----
  4486.    * Copyright (C) 1989, William Cheng.
  4487.    *
  4488. !  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/special.e,v 1.2 90/11/01 18:02:05 william Exp $
  4489.    */
  4490.   
  4491.   extern struct ObjRec    * ReadSymbol ();
  4492. + extern struct ObjRec    * GetObjRepresentation ();
  4493.   extern void    PlaceTopObj ();
  4494.   extern void    Instantiate ();
  4495. *** const.h.orig    Mon Jan  7 13:09:00 1991
  4496. --- const.h    Mon Jan  7 13:09:02 1991
  4497. ***************
  4498. *** 4,8 ****
  4499.    * Copyright (C) 1990, William Cheng.
  4500.    *
  4501. !  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/const.h,v 1.8 90/10/26 17:51:55 william Exp $
  4502.    */
  4503.   
  4504. --- 4,8 ----
  4505.    * Copyright (C) 1990, William Cheng.
  4506.    *
  4507. !  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/const.h,v 1.9 90/10/29 17:54:01 william Exp $
  4508.    */
  4509.   
  4510. ***************
  4511. *** 91,95 ****
  4512.   #define MAXLINESTYLES 4
  4513.   
  4514. ! #define MAXDASHES 4
  4515.   
  4516.   #define NOCONT (FALSE)
  4517. --- 91,95 ----
  4518.   #define MAXLINESTYLES 4
  4519.   
  4520. ! #define MAXDASHES 5
  4521.   
  4522.   #define NOCONT (FALSE)
  4523. *** Makefile.noimake.orig    Mon Jan  7 13:09:08 1991
  4524. --- Makefile.noimake    Mon Jan  7 13:09:09 1991
  4525. ***************
  4526. *** 4,8 ****
  4527.   # Copyright (C) 1990, William Cheng.
  4528.   #
  4529. ! # @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/Makefile.noimake,v 1.26 90/10/27 15:44:10 william Exp $
  4530.   #
  4531.   
  4532. --- 4,8 ----
  4533.   # Copyright (C) 1990, William Cheng.
  4534.   #
  4535. ! # @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/Makefile.noimake,v 1.29 90/11/10 13:53:48 william Exp $
  4536.   #
  4537.   
  4538. ***************
  4539. *** 10,15 ****
  4540.   LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
  4541.   
  4542. ! TGIFVERSION    = 1.16
  4543. ! INSTALLDIR    = /u/tangram/bin
  4544.   
  4545.   CC = cc
  4546. --- 10,15 ----
  4547.   LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
  4548.   
  4549. ! TGIFVERSION    = 1.19
  4550. ! INSTALLDIR    = /u/tangram/$(MACHINE)/bin
  4551.   
  4552.   CC = cc
  4553. ***************
  4554. *** 48,51 ****
  4555. --- 48,55 ----
  4556.       bitmaps/ld0.bm bitmaps/ld0s.bm bitmaps/ld1.bm bitmaps/ld1s.bm \
  4557.       bitmaps/ld2.bm bitmaps/ld2s.bm bitmaps/ld3.bm bitmaps/ld3s.bm \
  4558. +     bitmaps/ld4.bm bitmaps/ld4s.bm \
  4559. +     bitmaps/file.bm bitmaps/special.bm \
  4560. +     bitmaps/rotate_0.bm bitmaps/rotate_90.bm \
  4561. +     bitmaps/rotate_180.bm bitmaps/rotate_270.bm \
  4562.       bitmaps/oval.bm bitmaps/pat0.bm bitmaps/pat1.bm bitmaps/pat10.bm \
  4563.       bitmaps/pat11.bm bitmaps/pat12.bm bitmaps/pat13.bm bitmaps/pat14.bm \
  4564. ***************
  4565. *** 113,118 ****
  4566.   edit.o:        const.h types.h \
  4567.           align.e color.e copypaste.e cursor.e drawing.e dup.e font.e \
  4568. !         group.e mark.e obj.e poly.e raster.e select.e setup.e spline.e \
  4569. !         stretch.e
  4570.   file.o:        const.h types.h \
  4571.           align.e attr.e box.e button.e choice.e color.e dialog.e \
  4572. --- 117,122 ----
  4573.   edit.o:        const.h types.h \
  4574.           align.e color.e copypaste.e cursor.e drawing.e dup.e font.e \
  4575. !         group.e mark.e obj.e poly.e raster.e select.e setup.e \
  4576. !         special.e spline.e stretch.e
  4577.   file.o:        const.h types.h \
  4578.           align.e attr.e box.e button.e choice.e color.e dialog.e \
  4579. ***************
  4580. *** 175,180 ****
  4581.           choice.e color.e cursor.e drawing.e font.e mainloop.e menu.e \
  4582.           names.e raster.e ruler.e scroll.e stk.e
  4583. - spline.o:    const.h types.h \
  4584. -         poly.e raster.e rect.e setup.e
  4585.   special.o:    const.h types.h \
  4586.           animate.e attr.e choice.e color.e cursor.e dialog.e drawing.e \
  4587. --- 179,182 ----
  4588. ***************
  4589. *** 181,184 ****
  4590. --- 183,188 ----
  4591.           dup.e file.e grid.e group.e mark.e msg.e move.e names.e \
  4592.           obj.e raster.e select.e setup.e stk.e
  4593. + spline.o:    const.h types.h \
  4594. +         poly.e raster.e rect.e setup.e
  4595.   stk.o:        const.h types.h \
  4596.           align.e button.e choice.e color.e dup.e file.e font.e grid.e \
  4597. *** Imakefile.orig    Mon Jan  7 13:09:15 1991
  4598. --- Imakefile    Mon Jan  7 13:09:16 1991
  4599. ***************
  4600. *** 4,11 ****
  4601.   /**/# Copyright (C) 1990, William Cheng.
  4602.   /**/#
  4603. ! /**/# @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/Imakefile,v 1.29 90/10/27 15:42:31 william Exp $
  4604.   /**/#
  4605.   
  4606. ! TGIFVERSION    = 1.16
  4607.   PROGRAMS    = tgif prtgif tgif2ps frontend11.o
  4608.   /**/#CDEBUGFLAGS= -g
  4609. --- 4,11 ----
  4610.   /**/# Copyright (C) 1990, William Cheng.
  4611.   /**/#
  4612. ! /**/# @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/Imakefile,v 1.34 90/11/10 13:53:45 william Exp $
  4613.   /**/#
  4614.   
  4615. ! TGIFVERSION    = 1.19
  4616.   PROGRAMS    = tgif prtgif tgif2ps frontend11.o
  4617.   /**/#CDEBUGFLAGS= -g
  4618. ***************
  4619. *** 13,17 ****
  4620.   /**/#MANPATH    = /u/tangram/man
  4621.   /**/#TGIFDIR    = /u/tangram/lib/tgif
  4622. ! TGIFDIR    = $(LIBDIR)/tgif
  4623.   DEFINES        = -DTGIF_PATH=\"$(TGIFDIR)\" -DPSFILE_MOD=\"664\"
  4624.   LOCAL_LIBRARIES    = $(XLIB)
  4625. --- 13,17 ----
  4626.   /**/#MANPATH    = /u/tangram/man
  4627.   /**/#TGIFDIR    = /u/tangram/lib/tgif
  4628. ! TGIFDIR        = $(LIBDIR)/tgif
  4629.   DEFINES        = -DTGIF_PATH=\"$(TGIFDIR)\" -DPSFILE_MOD=\"664\"
  4630.   LOCAL_LIBRARIES    = $(XLIB)
  4631. ***************
  4632. *** 62,66 ****
  4633.   OBJDEMO = an-sr-flip-flop.obj fonts.obj slide-demo.obj spice//**/*.obj
  4634.   SYMDEMO = flip-flop.sym nand2.sym pin.sym tangram.sym spice//**/*.sym
  4635. ! MISCTAR = *.man README Copyright tgif.pl spice//**/*.mod example.tex
  4636.   
  4637.   distr: tar version
  4638. --- 62,66 ----
  4639.   OBJDEMO = an-sr-flip-flop.obj fonts.obj slide-demo.obj spice//**/*.obj
  4640.   SYMDEMO = flip-flop.sym nand2.sym pin.sym tangram.sym spice//**/*.sym
  4641. ! MISCTAR = /**/*.man README Copyright tgif.pl spice//**/*.mod example.tex
  4642.   
  4643.   distr: tar version
  4644. ***************
  4645. *** 116,119 ****
  4646.   version:
  4647.       what /**/*.c /**/*.e /**/*.h Makefile.noimake Imakefile \
  4648. !         /**/*.man tgif.pl README \
  4649.           > VersionInfo/Distribution/tgif-$(TGIFVERSION)
  4650. --- 116,119 ----
  4651.   version:
  4652.       what /**/*.c /**/*.e /**/*.h Makefile.noimake Imakefile \
  4653. !         /**/*.man tgif.pl README example.tex \
  4654.           > VersionInfo/Distribution/tgif-$(TGIFVERSION)
  4655. *** tgif.man.orig    Mon Jan  7 13:09:28 1991
  4656. --- tgif.man    Mon Jan  7 13:09:30 1991
  4657. ***************
  4658. *** 1,3 ****
  4659. ! .\"@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/tgif.man,v 1.13 90/10/27 17:28:39 william Exp $
  4660.   .TH TGIF 1 "Version 1.13 and Above" "Tgif"
  4661.   .SH NAME
  4662. --- 1,3 ----
  4663. ! .\"@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/tgif.man,v 1.17 90/11/08 17:02:40 william Exp $
  4664.   .TH TGIF 1 "Version 1.13 and Above" "Tgif"
  4665.   .SH NAME
  4666. ***************
  4667. *** 50,55 ****
  4668.   See \fBATTRIBUTES\fR section for details.
  4669.   .PP
  4670. ! The output of tgif is in PostScript(TM) form.  Normally, the output
  4671. ! is printed to /tmp/DRAW.PS and that file is piped to lpr.
  4672.   A mode within tgif allows the printout to go to a file with a
  4673.   .I \.ps
  4674. --- 50,56 ----
  4675.   See \fBATTRIBUTES\fR section for details.
  4676.   .PP
  4677. ! The output of tgif is in PostScript(TM) form (color PostScript
  4678. ! is supported).  Normally, the output
  4679. ! is printed to /tmp/Tgifa* where * is a number and that file is piped to lpr.
  4680.   A mode within tgif allows the printout to go to a file with a
  4681.   .I \.ps
  4682. ***************
  4683. *** 79,83 ****
  4684.   Tgif supports 20 fill patterns, 20 pen patterns, 7 line widths, 4 line
  4685.   styles (plain, head arrow, tail arrow, double arrows) for
  4686. ! polyline and open-splines, 3 types of text justifications, 4 text
  4687.   styles (roman, itatlic, bold, bold-italic), 12 text sizes
  4688.   (8, 10, 12, 14, 18, and 24 for the 75dpi fonts and
  4689. --- 80,85 ----
  4690.   Tgif supports 20 fill patterns, 20 pen patterns, 7 line widths, 4 line
  4691.   styles (plain, head arrow, tail arrow, double arrows) for
  4692. ! polyline and open-splines, 5 dash patterns,
  4693. ! 3 types of text justifications, 4 text
  4694.   styles (roman, itatlic, bold, bold-italic), 12 text sizes
  4695.   (8, 10, 12, 14, 18, and 24 for the 75dpi fonts and
  4696. ***************
  4697. *** 100,110 ****
  4698.   It displays tgif messages.  Mouse clicks and key presses have no effect.
  4699.   .TP
  4700. ! .I Panel Window
  4701.   This is the window to the right of the message window.
  4702.   It displays the current choice (in top/bottom, left/right order) of the
  4703. ! drawing mode, color, horizontal alignment, vertical alignment,
  4704. ! text justification, font and text rotation, line width, line style, print mode,
  4705. ! poly or spline, fill pattern, and pen pattern.
  4706. ! Key presses have no effect.
  4707.   .PP
  4708.   .RS
  4709. --- 102,114 ----
  4710.   It displays tgif messages.  Mouse clicks and key presses have no effect.
  4711.   .TP
  4712. ! .I Panel (Choice) Window
  4713.   This is the window to the right of the message window.
  4714.   It displays the current choice (in top/bottom, left/right order) of the
  4715. ! drawing mode, color, horizontal alignment (L C R -),
  4716. ! vertical alignment (T M B -),
  4717. ! text justification, font, text rotation, line width, line style,
  4718. ! poly or spline, dash pattern, print mode,
  4719. ! fill pattern, and pen pattern.
  4720. ! Key presses have no effect in this window.
  4721.   .PP
  4722.   .RS
  4723. ***************
  4724. *** 117,120 ****
  4725. --- 121,133 ----
  4726.   is used; also, icon objects
  4727.   will not change because they should be thought of as ``bitmaps''.
  4728. + .PP
  4729. + The settings of the horizontal and vertical
  4730. + alignments determine how objects align with
  4731. + each other when the ^L keyboard command is issued, and they
  4732. + determine how each individual object aligns with the grids
  4733. + when the ^T keyboard command is issued.  The horizontal
  4734. + alignments are left (L), center (C), right (R), and ignore (-).
  4735. + The vertical alignments are top (T), middle (M), bottom (B), and
  4736. + ignore (-).  The best way to understand them is to try them out.
  4737.   .RE
  4738.   .TP
  4739. ***************
  4740. *** 223,226 ****
  4741. --- 236,240 ----
  4742.    ^#I    make the selected complex object iconic\br
  4743.    ^#J    make the selected icon object a grouped object\br
  4744. +  ^#K    select color or black-and-white PostScript output\br
  4745.    ^#L    change the text justification to left justified\br
  4746.    ^#M    make the selected complex object symbolic\br
  4747. ***************
  4748. *** 232,237 ****
  4749. --- 246,253 ----
  4750.    ^#S    save the file under a new name\br
  4751.    ^#T    change the text style to italic\br
  4752. +  ^#U    update iconic representations of selected objects\br
  4753.    ^#V    change the drawing mode to oval\br
  4754.    ^#W    toggle between poly and spline\br
  4755. +  ^#X    select between printer and LaTeX file output\br
  4756.    ^#Y    paste from the cut buffer\br
  4757.   .DE
  4758. ***************
  4759. *** 341,346 ****
  4760.   high, which is the total height of the picture in an-sr-flip-flop.
  4761.   
  4762. ! Notice that the psfile special construct is used.  Encapsulated
  4763. ! PostScript format is not supported.  Again, \fItgif2ps\fR is
  4764.   used to generate the \fI.ps\fR file, so it should be
  4765.   installed in the path.
  4766. --- 357,361 ----
  4767.   high, which is the total height of the picture in an-sr-flip-flop.
  4768.   
  4769. ! Again, \fItgif2ps\fR is
  4770.   used to generate the \fI.ps\fR file, so it should be
  4771.   installed in the path.
  4772. *** tgif.pl.orig    Mon Jan  7 13:09:35 1991
  4773. --- tgif.pl    Mon Jan  7 13:09:36 1991
  4774. ***************
  4775. *** 6,10 ****
  4776.   % 4) Trace any other goals.
  4777.   %
  4778. ! % @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/tgif.pl,v 1.5 90/08/27 11:19:13 william Exp $
  4779.   %
  4780.   
  4781. --- 6,10 ----
  4782.   % 4) Trace any other goals.
  4783.   %
  4784. ! % @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/tgif.pl,v 1.6 90/11/03 13:29:22 william Exp $
  4785.   %
  4786.   
  4787. ***************
  4788. *** 48,54 ****
  4789.           _TextStyle,_TextSize,_TextDPI),
  4790.       ( OutputObj == true -> call(Obj) ; true ),
  4791. !     FileVersion >= 8,
  4792.       !, abolish(tgif_file_version/1),
  4793.       !, assert(tgif_file_version(FileVersion)).
  4794.   
  4795.   % --------------------------------------------------------------------- %
  4796. --- 48,68 ----
  4797.           _TextStyle,_TextSize,_TextDPI),
  4798.       ( OutputObj == true -> call(Obj) ; true ),
  4799. !     FileVersion =< 8,
  4800.       !, abolish(tgif_file_version/1),
  4801.       !, assert(tgif_file_version(FileVersion)).
  4802. + tgif_state(FileVersion,Obj) :-
  4803. +     (    var(Obj) -> OutputObj = true,
  4804. +         current_predicate(state,
  4805. +             state(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_))
  4806. +     ;    OutputObj = false
  4807. +     ),
  4808. +     Obj = state(_PageStyle,FileVersion,_OrigX,_OrigY,_Zoom,
  4809. +         _GridSize,_Grid,_Color,_HoriAlign,_VertAlign,_LineWidth,
  4810. +         _Spline,_LineStyle,_ObjFill,_PenPat,_TextJust,_Font,
  4811. +         _TextStyle,_TextSize,_TextDPI,_Dash),
  4812. +     ( OutputObj == true -> call(Obj) ; true ),
  4813. +     FileVersion >= 9,
  4814. +     !, abolish(tgif_file_version/1),
  4815. +     !, assert(tgif_file_version(FileVersion)).
  4816.   
  4817.   % --------------------------------------------------------------------- %
  4818. ***************
  4819. *** 103,107 ****
  4820.       current_predicate(tgif_file_version,tgif_file_version(_)),
  4821.       tgif_file_version(FileVersion),
  4822. !     FileVersion >= 8, !,
  4823.       ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  4824.       Obj = box(_Color,_X1,_Y1,_X2,_Y2,_ObjFill,_LineWidth,_PenPat,_Id,
  4825. --- 117,121 ----
  4826.       current_predicate(tgif_file_version,tgif_file_version(_)),
  4827.       tgif_file_version(FileVersion),
  4828. !     FileVersion =< 8, !,
  4829.       ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  4830.       Obj = box(_Color,_X1,_Y1,_X2,_Y2,_ObjFill,_LineWidth,_PenPat,_Id,
  4831. ***************
  4832. *** 109,112 ****
  4833. --- 123,135 ----
  4834.       ( OutputObj == true -> call(Obj) ; true ),
  4835.       tgif_attrs(AttrList).
  4836. + tgif_box(Obj) :-
  4837. +     current_predicate(tgif_file_version,tgif_file_version(_)),
  4838. +     tgif_file_version(FileVersion),
  4839. +     FileVersion >= 9, !,
  4840. +     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  4841. +     Obj = box(_Color,_X1,_Y1,_X2,_Y2,_ObjFill,_LineWidth,_PenPat,_Id,_Dash,
  4842. +         AttrList),
  4843. +     ( OutputObj == true -> call(Obj) ; true ),
  4844. +     tgif_attrs(AttrList).
  4845.   
  4846.   % --------------------------------------------------------------------- %
  4847. ***************
  4848. *** 123,127 ****
  4849.       current_predicate(tgif_file_version,tgif_file_version(_)),
  4850.       tgif_file_version(FileVersion),
  4851. !     FileVersion >= 8, !,
  4852.       ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  4853.       Obj = oval(_Color,_LeftTopX,_LeftTopY,_RightBotX,_RightBotY,_ObjFill,
  4854. --- 146,150 ----
  4855.       current_predicate(tgif_file_version,tgif_file_version(_)),
  4856.       tgif_file_version(FileVersion),
  4857. !     FileVersion =< 8, !,
  4858.       ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  4859.       Obj = oval(_Color,_LeftTopX,_LeftTopY,_RightBotX,_RightBotY,_ObjFill,
  4860. ***************
  4861. *** 129,132 ****
  4862. --- 152,164 ----
  4863.       ( OutputObj == true -> call(Obj) ; true ),
  4864.       tgif_attrs(AttrList).
  4865. + tgif_oval(Obj) :-
  4866. +     current_predicate(tgif_file_version,tgif_file_version(_)),
  4867. +     tgif_file_version(FileVersion),
  4868. +     FileVersion >= 9, !,
  4869. +     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  4870. +     Obj = oval(_Color,_LeftTopX,_LeftTopY,_RightBotX,_RightBotY,_ObjFill,
  4871. +         _LineWidth,_PenPat,_Id,_Dash,AttrList),
  4872. +     ( OutputObj == true -> call(Obj) ; true ),
  4873. +     tgif_attrs(AttrList).
  4874.   
  4875.   % --------------------------------------------------------------------- %
  4876. ***************
  4877. *** 153,157 ****
  4878.       current_predicate(tgif_file_version,tgif_file_version(_)),
  4879.       tgif_file_version(FileVersion),
  4880. !     FileVersion >= 5, !,
  4881.       ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  4882.       Obj = poly(_Color,_NumVs,_Vs,_LineStyle,_LineWidth,_PenPat,_Id,_Spline,
  4883. --- 185,189 ----
  4884.       current_predicate(tgif_file_version,tgif_file_version(_)),
  4885.       tgif_file_version(FileVersion),
  4886. !     FileVersion =< 8, !,
  4887.       ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  4888.       Obj = poly(_Color,_NumVs,_Vs,_LineStyle,_LineWidth,_PenPat,_Id,_Spline,
  4889. ***************
  4890. *** 159,162 ****
  4891. --- 191,203 ----
  4892.       ( OutputObj == true -> call(Obj) ; true ),
  4893.       tgif_attrs(AttrList).
  4894. + tgif_poly(Obj) :-
  4895. +     current_predicate(tgif_file_version,tgif_file_version(_)),
  4896. +     tgif_file_version(FileVersion),
  4897. +     FileVersion >= 9, !,
  4898. +     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  4899. +     Obj = poly(_Color,_NumVs,_Vs,_LineStyle,_LineWidth,_PenPat,_Id,_Spline,
  4900. +         _ObjFill,_Dash,AttrList),
  4901. +     ( OutputObj == true -> call(Obj) ; true ),
  4902. +     tgif_attrs(AttrList).
  4903.   
  4904.   % --------------------------------------------------------------------- %
  4905. ***************
  4906. *** 179,186 ****
  4907.       current_predicate(tgif_file_version,tgif_file_version(_)),
  4908.       tgif_file_version(FileVersion),
  4909. !     FileVersion >= 8, !,
  4910.       ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  4911.       Obj = polygon(_Color,_NumVs,_Vs,_ObjFill,_LineWidth,_PenPat,_Spline,
  4912.           _Id,AttrList),
  4913.       ( OutputObj == true -> call(Obj) ; true ),
  4914.       tgif_attrs(AttrList).
  4915. --- 220,236 ----
  4916.       current_predicate(tgif_file_version,tgif_file_version(_)),
  4917.       tgif_file_version(FileVersion),
  4918. !     FileVersion =< 8, !,
  4919.       ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  4920.       Obj = polygon(_Color,_NumVs,_Vs,_ObjFill,_LineWidth,_PenPat,_Spline,
  4921.           _Id,AttrList),
  4922. +     ( OutputObj == true -> call(Obj) ; true ),
  4923. +     tgif_attrs(AttrList).
  4924. + tgif_polygon(Obj) :-
  4925. +     current_predicate(tgif_file_version,tgif_file_version(_)),
  4926. +     tgif_file_version(FileVersion),
  4927. +     FileVersion >= 9, !,
  4928. +     ( var(Obj) -> OutputObj = true ; OutputObj = false ),
  4929. +     Obj = polygon(_Color,_NumVs,_Vs,_ObjFill,_LineWidth,_PenPat,_Spline,
  4930. +         _Id,_Dash,AttrList),
  4931.       ( OutputObj == true -> call(Obj) ; true ),
  4932.       tgif_attrs(AttrList).
  4933. *** example.tex.orig    Mon Jan  7 13:09:39 1991
  4934. --- example.tex    Mon Jan  7 13:09:40 1991
  4935. ***************
  4936. *** 0 ****
  4937. --- 1,40 ----
  4938. + %
  4939. + % @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/example.tex,v 1.1 90/11/06 02:26:33 william Exp $
  4940. + %
  4941. + \documentstyle[12pt]{article}
  4942. + %
  4943. + \oddsidemargin=0in
  4944. + \textwidth=6.5in
  4945. + \topmargin=0in
  4946. + \textheight=609pt
  4947. + \parskip=14pt
  4948. + \setlength{\unitlength}{0.5cm}
  4949. + \begin{document}
  4950. + %
  4951. + Figure \ref{fig:psfig} is an example of a tgif \LaTeX\,\, figure printed with
  4952. + the ``psfig'' macro.  Here is a bunch of random text.
  4953. + %
  4954. + \begin{figure*}[htb]
  4955. + \input{psfig}
  4956. + \centerline{\psfig{figure=an-sr-flip-flop.ps}}
  4957. + \caption{Example Tgif Diagram Printed with ``psfig'' Macro.\label{fig:psfig}}
  4958. + \end{figure*}
  4959. + %
  4960. + Here is another bunch of random text, just to see how it looks on the page.
  4961. + What it should do is to center the picture on the page.  But what does
  4962. + it really do?  We shall see $\ldots$
  4963. + Figure \ref{fig:an-sr-flip-flop} is an example of a tgif \LaTeX\,\, figure
  4964. + printed with the ``psfile'' macro.  Here is a bunch of random text.
  4965. + %
  4966. + \begin{figure*}[htb]
  4967. + \special{psfile="an-sr-flip-flop.ps" hoffset=-40}
  4968. + \rule{0in}{1.1in}
  4969. + \caption{Example Tgif Diagram Printed with ``psfile'' Macro.
  4970. +       \label{fig:an-sr-flip-flop}}
  4971. + \end{figure*}
  4972. + %
  4973. + Here is another bunch of random text, just to see how it looks on the page.
  4974. + What it should do is to center the picture on the page.  But what does
  4975. + it really do?  We shall see $\ldots$
  4976. + \end{document}
  4977. *** bitmaps/ld1.bm.orig    Mon Oct 29 20:56:26 1990
  4978. --- bitmaps/ld1.bm    Mon Oct 29 20:56:27 1990
  4979. ***************
  4980. *** 10,14 ****
  4981.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  4982.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  4983. !    0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x18, 0x00, 0x00, 0x00, 0x00,
  4984.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  4985.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  4986. --- 10,14 ----
  4987.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  4988.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  4989. !    0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
  4990.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  4991.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  4992. *** bitmaps/ld1s.bm.orig    Mon Oct 29 20:56:43 1990
  4993. --- bitmaps/ld1s.bm    Mon Oct 29 20:56:43 1990
  4994. ***************
  4995. *** 7,11 ****
  4996.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  4997.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  4998. !    0x78, 0x78, 0x78, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  4999.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5000.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5001. --- 7,11 ----
  5002.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5003.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5004. !    0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5005.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5006.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5007. *** bitmaps/ld2.bm.orig    Mon Oct 29 20:56:54 1990
  5008. --- bitmaps/ld2.bm    Mon Oct 29 20:56:55 1990
  5009. ***************
  5010. *** 10,14 ****
  5011.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5012.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5013. !    0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0x19, 0x00, 0x00, 0x00, 0x00,
  5014.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5015.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5016. --- 10,14 ----
  5017.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5018.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5019. !    0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x18, 0x00, 0x00, 0x00, 0x00,
  5020.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5021.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5022. *** bitmaps/ld2s.bm.orig    Mon Oct 29 20:57:05 1990
  5023. --- bitmaps/ld2s.bm    Mon Oct 29 20:57:06 1990
  5024. ***************
  5025. *** 7,11 ****
  5026.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5027.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5028. !    0xf8, 0xf9, 0xf9, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5029.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5030.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5031. --- 7,11 ----
  5032.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5033.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5034. !    0x78, 0x78, 0x78, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5035.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5036.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5037. *** bitmaps/ld3.bm.orig    Mon Oct 29 20:57:18 1990
  5038. --- bitmaps/ld3.bm    Mon Oct 29 20:57:19 1990
  5039. ***************
  5040. *** 10,14 ****
  5041.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5042.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5043. !    0xf8, 0x9f, 0xf9, 0x9f, 0xf9, 0x9f, 0xf9, 0x1f, 0x00, 0x00, 0x00, 0x00,
  5044.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5045.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5046. --- 10,14 ----
  5047.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5048.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5049. !    0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0x19, 0x00, 0x00, 0x00, 0x00,
  5050.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5051.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5052. ***************
  5053. *** 16,19 ****
  5054.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5055.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5056. !    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c,
  5057. !    0x3c, 0x3c, 0x3c, 0x3c};
  5058. --- 16,19 ----
  5059.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5060.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5061. !    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5062. !    0x00, 0x00, 0x00, 0x00};
  5063. *** bitmaps/ld3s.bm.orig    Mon Oct 29 20:57:31 1990
  5064. --- bitmaps/ld3s.bm    Mon Oct 29 20:57:31 1990
  5065. ***************
  5066. *** 7,11 ****
  5067.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5068.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5069. !    0xf8, 0x9f, 0xf9, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5070.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5071.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5072. --- 7,11 ----
  5073.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5074.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5075. !    0xf8, 0xf9, 0xf9, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5076.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5077.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5078. *** bitmaps/ld4.bm.orig    Mon Oct 29 20:58:06 1990
  5079. --- bitmaps/ld4.bm    Mon Oct 29 20:58:06 1990
  5080. ***************
  5081. *** 0 ****
  5082. --- 1,19 ----
  5083. + #define ld4_width 64
  5084. + #define ld4_height 20
  5085. + #define ld4_x_hot 0
  5086. + #define ld4_y_hot 0
  5087. + static char ld4_bits[] = {
  5088. +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5089. +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5090. +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5091. +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5092. +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5093. +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5094. +    0xf8, 0x9f, 0xf9, 0x9f, 0xf9, 0x9f, 0xf9, 0x1f, 0x00, 0x00, 0x00, 0x00,
  5095. +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5096. +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5097. +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5098. +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5099. +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5100. +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c,
  5101. +    0x3c, 0x3c, 0x3c, 0x3c};
  5102. *** bitmaps/ld4s.bm.orig    Mon Oct 29 20:58:15 1990
  5103. --- bitmaps/ld4s.bm    Mon Oct 29 20:58:16 1990
  5104. ***************
  5105. *** 0 ****
  5106. --- 1,12 ----
  5107. + #define ld4s_width 32
  5108. + #define ld4s_height 20
  5109. + #define ld4s_x_hot 0
  5110. + #define ld4s_y_hot 0
  5111. + static char ld4s_bits[] = {
  5112. +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5113. +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5114. +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5115. +    0xf8, 0x9f, 0xf9, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5116. +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5117. +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5118. +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
  5119. ---------------------------------> cut here <---------------------------------
  5120. -- 
  5121. Bill Cheng // UCLA Computer Science Department // (213) 206-7135
  5122. 3277 Boelter Hall // Los Angeles, California 90024 // USA
  5123. william@CS.UCLA.EDU      ...!{uunet|ucbvax}!cs.ucla.edu!william
  5124.  
  5125. From news@CS.UCLA.EDU Mon Jan  7 19:01:03 1991
  5126. Received: from Shemp.CS.UCLA.EDU by uunet.UU.NET (5.61/1.14) with SMTP 
  5127.     id AA07044; Mon, 7 Jan 91 19:00:53 -0500
  5128. Received: by shemp.cs.ucla.edu
  5129.     (Sendmail 5.61a+YP/2.33) id AA05404;
  5130.     Mon, 7 Jan 91 16:00:39 -0800
  5131. Newsgroups: comp.sources.x
  5132. Path: oahu.cs.ucla.edu!william
  5133. From: william@CS.UCLA.EDU (William Cheng)
  5134. Subject: v07i056-076: tgif, Patch7 (tgif-1.16 => tgif-1.19), Part05/05
  5135. Message-Id: <1991Jan8.000022.5315@cs.ucla.edu>
  5136. Followup-To: william@cs.ucla.edu
  5137. Originator: william@oahu.cs.ucla.edu
  5138. Keywords: draw, tool, postscript, latex, hierarchical, x11, xlib, wysiwyg
  5139. Sender: news@cs.ucla.edu (Mr. News)
  5140. Nntp-Posting-Host: oahu.cs.ucla.edu
  5141. Organization: UCLA Computer Science Department
  5142. Date: Tue, 8 Jan 91 00:00:22 GMT
  5143. Patch-To: tgif: Volume 7, Issues 56-76
  5144. Apparently-To: comp-sources-x@uunet.uu.net
  5145. Status: O
  5146.  
  5147. ---------------------------------> cut here <---------------------------------
  5148. *** bitmaps/file.bm.orig    Wed Jun 27 09:15:24 1990
  5149. --- bitmaps/file.bm    Tue Oct 30 14:31:43 1990
  5150. ***************
  5151. *** 1,9 ****
  5152. ! #define file_width 20
  5153. ! #define file_height 15
  5154.   #define file_x_hot 0
  5155.   #define file_y_hot 0
  5156.   static char file_bits[] = {
  5157. !    0x00, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x20, 0x18, 0x00, 0x20, 0x38, 0x00,
  5158. !    0x20, 0x78, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00,
  5159. !    0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00,
  5160. !    0x20, 0x40, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x00, 0x00};
  5161. --- 1,12 ----
  5162. ! #define file_width 32
  5163. ! #define file_height 20
  5164.   #define file_x_hot 0
  5165.   #define file_y_hot 0
  5166.   static char file_bits[] = {
  5167. !    0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0x02, 0x06, 0x00,
  5168. !    0x00, 0x02, 0x0a, 0x00, 0x00, 0x02, 0x12, 0x00, 0x00, 0x02, 0x22, 0x00,
  5169. !    0x00, 0x02, 0x7e, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x02, 0x40, 0x00,
  5170. !    0x00, 0x02, 0x40, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x02, 0x40, 0x00,
  5171. !    0x00, 0x02, 0x40, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x02, 0x40, 0x00,
  5172. !    0x00, 0x02, 0x40, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x02, 0x40, 0x00,
  5173. !    0x00, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00};
  5174. *** bitmaps/rotate_0.bm.orig    Thu Nov  1 10:04:52 1990
  5175. --- bitmaps/rotate_0.bm    Tue Oct 30 16:21:06 1990
  5176. ***************
  5177. *** 0 ****
  5178. --- 1,12 ----
  5179. + #define rotate_0_width 32
  5180. + #define rotate_0_height 20
  5181. + #define rotate_0_x_hot 0
  5182. + #define rotate_0_y_hot 0
  5183. + static char rotate_0_bits[] = {
  5184. +    0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x30, 0x18, 0x00,
  5185. +    0x00, 0x0c, 0x61, 0x00, 0x00, 0x04, 0x41, 0x00, 0x00, 0x82, 0x83, 0x00,
  5186. +    0x00, 0x82, 0x83, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01,
  5187. +    0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
  5188. +    0x00, 0x02, 0x80, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x04, 0x40, 0x00,
  5189. +    0x00, 0x0c, 0x60, 0x00, 0x00, 0x30, 0x18, 0x00, 0x00, 0xc0, 0x07, 0x00,
  5190. +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
  5191. *** bitmaps/rotate_180.bm.orig    Thu Nov  1 10:04:52 1990
  5192. --- bitmaps/rotate_180.bm    Tue Oct 30 16:21:07 1990
  5193. ***************
  5194. *** 0 ****
  5195. --- 1,12 ----
  5196. + #define rotate_180_width 32
  5197. + #define rotate_180_height 20
  5198. + #define rotate_180_x_hot 0
  5199. + #define rotate_180_y_hot 0
  5200. + static char rotate_180_bits[] = {
  5201. +    0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x30, 0x18, 0x00,
  5202. +    0x00, 0x0c, 0x60, 0x00, 0x00, 0x04, 0x40, 0x00, 0x00, 0x02, 0x80, 0x00,
  5203. +    0x00, 0x02, 0x80, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
  5204. +    0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01,
  5205. +    0x00, 0x82, 0x83, 0x00, 0x00, 0x82, 0x83, 0x00, 0x00, 0x04, 0x41, 0x00,
  5206. +    0x00, 0x0c, 0x61, 0x00, 0x00, 0x30, 0x18, 0x00, 0x00, 0xc0, 0x07, 0x00,
  5207. +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
  5208. *** bitmaps/rotate_270.bm.orig    Thu Nov  1 10:04:52 1990
  5209. --- bitmaps/rotate_270.bm    Tue Oct 30 16:21:08 1990
  5210. ***************
  5211. *** 0 ****
  5212. --- 1,12 ----
  5213. + #define rotate_270_width 32
  5214. + #define rotate_270_height 20
  5215. + #define rotate_270_x_hot 0
  5216. + #define rotate_270_y_hot 0
  5217. + static char rotate_270_bits[] = {
  5218. +    0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x30, 0x18, 0x00,
  5219. +    0x00, 0x0c, 0x60, 0x00, 0x00, 0x04, 0x40, 0x00, 0x00, 0x02, 0x80, 0x00,
  5220. +    0x00, 0x02, 0x80, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x31, 0x00, 0x01,
  5221. +    0x00, 0xfd, 0x01, 0x01, 0x00, 0x31, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
  5222. +    0x00, 0x02, 0x80, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x04, 0x40, 0x00,
  5223. +    0x00, 0x0c, 0x60, 0x00, 0x00, 0x30, 0x18, 0x00, 0x00, 0xc0, 0x07, 0x00,
  5224. +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
  5225. *** bitmaps/rotate_90.bm.orig    Thu Nov  1 10:04:52 1990
  5226. --- bitmaps/rotate_90.bm    Tue Oct 30 16:21:09 1990
  5227. ***************
  5228. *** 0 ****
  5229. --- 1,12 ----
  5230. + #define rotate_90_width 32
  5231. + #define rotate_90_height 20
  5232. + #define rotate_90_x_hot 0
  5233. + #define rotate_90_y_hot 0
  5234. + static char rotate_90_bits[] = {
  5235. +    0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x30, 0x18, 0x00,
  5236. +    0x00, 0x0c, 0x60, 0x00, 0x00, 0x04, 0x40, 0x00, 0x00, 0x02, 0x80, 0x00,
  5237. +    0x00, 0x02, 0x80, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x18, 0x01,
  5238. +    0x00, 0x01, 0x7f, 0x01, 0x00, 0x01, 0x18, 0x01, 0x00, 0x01, 0x00, 0x01,
  5239. +    0x00, 0x02, 0x80, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x04, 0x40, 0x00,
  5240. +    0x00, 0x0c, 0x60, 0x00, 0x00, 0x30, 0x18, 0x00, 0x00, 0xc0, 0x07, 0x00,
  5241. +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
  5242. *** bitmaps/special.bm.orig    Thu Nov  1 10:04:52 1990
  5243. --- bitmaps/special.bm    Tue Oct 30 16:29:15 1990
  5244. ***************
  5245. *** 0 ****
  5246. --- 1,12 ----
  5247. + #define special_width 32
  5248. + #define special_height 20
  5249. + #define special_x_hot 0
  5250. + #define special_y_hot 0
  5251. + static char special_bits[] = {
  5252. +    0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x20, 0x08, 0x00,
  5253. +    0x00, 0x10, 0x10, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x08, 0x20, 0x00,
  5254. +    0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00,
  5255. +    0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00,
  5256. +    0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
  5257. +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x03, 0x00,
  5258. +    0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00};
  5259. *** an-sr-flip-flop.obj.orig    Wed Jun 27 09:16:31 1990
  5260. --- an-sr-flip-flop.obj    Mon Jul 30 17:57:36 1990
  5261. ***************
  5262. *** 1,3 ****
  5263. ! state(0,6,0,0,0,8,1,6,0,2,0,1,0,0,1,1,0,0,4).
  5264.   icon([
  5265.   group([
  5266. --- 1,3 ----
  5267. ! state(0,7,0,0,0,8,1,6,0,2,0,1,0,0,1,1,0,0,4).
  5268.   icon([
  5269.   group([
  5270. ***************
  5271. *** 19,26 ****
  5272.   "pin",43,[
  5273.   attr("name=", "Q", 1, 0, 1,
  5274. ! text(green,504,8,1,0,4,1,1,0,1,[
  5275.       "Q"])),
  5276.   attr("num=", "", 0, 1, 1,
  5277. ! text(green,536,-24,1,0,4,1,1,0,1,[
  5278.       "num="]))
  5279.   ]),
  5280. --- 19,26 ----
  5281.   "pin",43,[
  5282.   attr("name=", "Q", 1, 0, 1,
  5283. ! text(green,504,8,1,0,4,1,1,0,1,11,17,[
  5284.       "Q"])),
  5285.   attr("num=", "", 0, 1, 1,
  5286. ! text(green,536,-24,1,0,4,1,1,0,1,44,17,[
  5287.       "num="]))
  5288.   ]),
  5289. ***************
  5290. *** 31,38 ****
  5291.   "pin",44,[
  5292.   attr("num=", "", 0, 1, 1,
  5293. ! text(green,536,24,1,0,4,1,1,0,1,[
  5294.       "num="])),
  5295.   attr("name=", "Q'", 1, 0, 1,
  5296. ! text(green,496,56,1,0,4,1,1,0,1,[
  5297.       "Q'"]))
  5298.   ]),
  5299. --- 31,38 ----
  5300.   "pin",44,[
  5301.   attr("num=", "", 0, 1, 1,
  5302. ! text(green,536,24,1,0,4,1,1,0,1,44,17,[
  5303.       "num="])),
  5304.   attr("name=", "Q'", 1, 0, 1,
  5305. ! text(green,496,56,1,0,4,1,1,0,1,22,17,[
  5306.       "Q'"]))
  5307.   ]),
  5308. ***************
  5309. *** 43,50 ****
  5310.   "pin",45,[
  5311.   attr("num=", "", 0, 1, 1,
  5312. ! text(green,424,-24,1,0,4,1,1,0,1,[
  5313.       "num="])),
  5314.   attr("name=", "S'", 1, 0, 1,
  5315. ! text(green,464,8,1,0,4,1,1,0,1,[
  5316.       "S'"]))
  5317.   ]),
  5318. --- 43,50 ----
  5319.   "pin",45,[
  5320.   attr("num=", "", 0, 1, 1,
  5321. ! text(green,424,-24,1,0,4,1,1,0,1,44,17,[
  5322.       "num="])),
  5323.   attr("name=", "S'", 1, 0, 1,
  5324. ! text(green,464,8,1,0,4,1,1,0,1,22,17,[
  5325.       "S'"]))
  5326.   ]),
  5327. ***************
  5328. *** 55,62 ****
  5329.   "pin",46,[
  5330.   attr("name=", "R'", 1, 0, 1,
  5331. ! text(green,464,56,1,0,4,1,1,0,1,[
  5332.       "R'"])),
  5333.   attr("num=", "", 0, 1, 1,
  5334. ! text(green,424,24,1,0,4,1,1,0,1,[
  5335.       "num="]))
  5336.   ])
  5337. --- 55,62 ----
  5338.   "pin",46,[
  5339.   attr("name=", "R'", 1, 0, 1,
  5340. ! text(green,464,56,1,0,4,1,1,0,1,22,17,[
  5341.       "R'"])),
  5342.   attr("num=", "", 0, 1, 1,
  5343. ! text(green,424,24,1,0,4,1,1,0,1,44,17,[
  5344.       "num="]))
  5345.   ])
  5346. ***************
  5347. *** 64,68 ****
  5348.   "flip-flop",51,[
  5349.   ]).
  5350. ! text(white,480,104,0,0,4,2,1,0,1,[
  5351.       "This is a SR flip-flop",
  5352.       "Select the flip-flop with left mouse button and type ^V"]).
  5353. --- 64,68 ----
  5354.   "flip-flop",51,[
  5355.   ]).
  5356. ! text(white,480,104,0,0,4,2,1,0,1,405,38,[
  5357.       "This is a SR flip-flop",
  5358.       "Select the flip-flop with left mouse button and type ^V"]).
  5359. *** fonts.obj.orig    Wed Jun 27 09:16:32 1990
  5360. --- fonts.obj    Mon Jul 30 17:53:07 1990
  5361. ***************
  5362. *** 1,241 ****
  5363. ! state(0,2,0,192,0,16,1,0,1,1,1,1,2,7,0,0,3,4).
  5364. ! text(yellow,64,64,0,0,4,1,0,[
  5365.       "hello world"]).
  5366. ! text(yellow,64,80,1,0,4,1,0,[
  5367.       "hello world"]).
  5368. ! text(yellow,64,96,2,0,4,1,0,[
  5369.       "hello world"]).
  5370. ! text(yellow,64,112,3,0,4,1,0,[
  5371.       "hello world"]).
  5372. ! text(yellow,64,128,4,0,4,1,0,[
  5373.       "hello world"]).
  5374. ! text(yellow,192,64,0,1,4,1,0,[
  5375.       "hello world"]).
  5376. ! text(yellow,192,80,1,1,4,1,0,[
  5377.       "hello world"]).
  5378. ! text(yellow,192,96,2,1,4,1,0,[
  5379.       "hello world"]).
  5380. ! text(yellow,192,112,3,1,4,1,0,[
  5381.       "hello world"]).
  5382. ! text(yellow,192,128,4,1,4,1,0,[
  5383.       "hello world"]).
  5384. ! text(yellow,320,64,0,2,4,1,0,[
  5385.       "hello world"]).
  5386. ! text(yellow,320,80,1,2,4,1,0,[
  5387.       "hello world"]).
  5388. ! text(yellow,320,96,2,2,4,1,0,[
  5389.       "hello world"]).
  5390. ! text(yellow,320,112,3,2,4,1,0,[
  5391.       "hello world"]).
  5392. ! text(yellow,320,128,4,2,4,1,0,[
  5393.       "hello world"]).
  5394. ! text(yellow,448,64,0,3,4,1,0,[
  5395.       "hello world"]).
  5396. ! text(yellow,448,80,1,3,4,1,0,[
  5397.       "hello world"]).
  5398. ! text(yellow,448,96,2,3,4,1,0,[
  5399.       "hello world"]).
  5400. ! text(yellow,448,112,3,3,4,1,0,[
  5401.       "hello world"]).
  5402. ! text(yellow,448,128,4,3,4,1,0,[
  5403.       "hello world"]).
  5404. ! text(yellow,64,192,0,0,5,1,0,[
  5405.       "hello world"]).
  5406. ! text(yellow,64,208,1,0,5,1,0,[
  5407.       "hello world"]).
  5408. ! text(yellow,64,224,2,0,5,1,0,[
  5409.       "hello world"]).
  5410. ! text(yellow,64,240,3,0,5,1,0,[
  5411.       "hello world"]).
  5412. ! text(yellow,64,256,4,0,5,1,0,[
  5413.       "hello world"]).
  5414. ! text(yellow,256,192,0,1,5,1,0,[
  5415.       "hello world"]).
  5416. ! text(yellow,256,208,1,1,5,1,0,[
  5417.       "hello world"]).
  5418. ! text(yellow,256,224,2,1,5,1,0,[
  5419.       "hello world"]).
  5420. ! text(yellow,256,240,3,1,5,1,0,[
  5421.       "hello world"]).
  5422. ! text(yellow,256,256,4,1,5,1,0,[
  5423.       "hello world"]).
  5424. ! text(yellow,448,192,0,2,5,1,0,[
  5425.       "hello world"]).
  5426. ! text(yellow,448,208,1,2,5,1,0,[
  5427.       "hello world"]).
  5428. ! text(yellow,448,224,2,2,5,1,0,[
  5429.       "hello world"]).
  5430. ! text(yellow,448,240,3,2,5,1,0,[
  5431.       "hello world"]).
  5432. ! text(yellow,448,256,4,2,5,1,0,[
  5433.       "hello world"]).
  5434. ! text(yellow,640,192,0,3,5,1,0,[
  5435.       "hello world"]).
  5436. ! text(yellow,640,208,1,3,5,1,0,[
  5437.       "hello world"]).
  5438. ! text(yellow,640,224,2,3,5,1,0,[
  5439.       "hello world"]).
  5440. ! text(yellow,640,240,3,3,5,1,0,[
  5441.       "hello world"]).
  5442. ! text(yellow,640,256,4,3,5,1,0,[
  5443.       "hello world"]).
  5444. ! text(yellow,64,320,0,0,3,1,0,[
  5445.       "hello world"]).
  5446. ! text(yellow,64,336,1,0,3,1,0,[
  5447.       "hello world"]).
  5448. ! text(yellow,64,352,2,0,3,1,0,[
  5449.       "hello world"]).
  5450. ! text(yellow,64,368,3,0,3,1,0,[
  5451.       "hello world"]).
  5452. ! text(yellow,64,384,4,0,3,1,0,[
  5453.       "hello world"]).
  5454. ! text(yellow,192,320,0,1,3,1,0,[
  5455.       "hello world"]).
  5456. ! text(yellow,192,336,1,1,3,1,0,[
  5457.       "hello world"]).
  5458. ! text(yellow,192,352,2,1,3,1,0,[
  5459.       "hello world"]).
  5460. ! text(yellow,192,368,3,1,3,1,0,[
  5461.       "hello world"]).
  5462. ! text(yellow,192,384,4,1,3,1,0,[
  5463.       "hello world"]).
  5464. ! text(yellow,320,320,0,2,3,1,0,[
  5465.       "hello world"]).
  5466. ! text(yellow,320,336,1,2,3,1,0,[
  5467.       "hello world"]).
  5468. ! text(yellow,320,352,2,2,3,1,0,[
  5469.       "hello world"]).
  5470. ! text(yellow,320,368,3,2,3,1,0,[
  5471.       "hello world"]).
  5472. ! text(yellow,320,384,4,2,3,1,0,[
  5473.       "hello world"]).
  5474. ! text(yellow,448,320,0,3,3,1,0,[
  5475.       "hello world"]).
  5476. ! text(yellow,448,336,1,3,3,1,0,[
  5477.       "hello world"]).
  5478. ! text(yellow,448,352,2,3,3,1,0,[
  5479.       "hello world"]).
  5480. ! text(yellow,448,368,3,3,3,1,0,[
  5481.       "hello world"]).
  5482. ! text(yellow,448,384,4,3,3,1,0,[
  5483.       "hello world"]).
  5484. ! text(yellow,64,448,0,0,2,1,0,[
  5485.       "hello world"]).
  5486. ! text(yellow,64,464,1,0,2,1,0,[
  5487.       "hello world"]).
  5488. ! text(yellow,64,480,2,0,2,1,0,[
  5489.       "hello world"]).
  5490. ! text(yellow,64,496,3,0,2,1,0,[
  5491.       "hello world"]).
  5492. ! text(yellow,64,512,4,0,2,1,0,[
  5493.       "hello world"]).
  5494. ! text(yellow,192,448,0,1,2,1,0,[
  5495.       "hello world"]).
  5496. ! text(yellow,192,464,1,1,2,1,0,[
  5497.       "hello world"]).
  5498. ! text(yellow,192,480,2,1,2,1,0,[
  5499.       "hello world"]).
  5500. ! text(yellow,192,496,3,1,2,1,0,[
  5501.       "hello world"]).
  5502. ! text(yellow,192,512,4,1,2,1,0,[
  5503.       "hello world"]).
  5504. ! text(yellow,320,448,0,2,2,1,0,[
  5505.       "hello world"]).
  5506. ! text(yellow,320,464,1,2,2,1,0,[
  5507.       "hello world"]).
  5508. ! text(yellow,320,480,2,2,2,1,0,[
  5509.       "hello world"]).
  5510. ! text(yellow,320,496,3,2,2,1,0,[
  5511.       "hello world"]).
  5512. ! text(yellow,320,512,4,2,2,1,0,[
  5513.       "hello world"]).
  5514. ! text(yellow,448,448,0,3,2,1,0,[
  5515.       "hello world"]).
  5516. ! text(yellow,448,464,1,3,2,1,0,[
  5517.       "hello world"]).
  5518. ! text(yellow,448,480,2,3,2,1,0,[
  5519.       "hello world"]).
  5520. ! text(yellow,448,496,3,3,2,1,0,[
  5521.       "hello world"]).
  5522. ! text(yellow,448,512,4,3,2,1,0,[
  5523.       "hello world"]).
  5524. ! text(yellow,64,576,0,0,1,1,0,[
  5525.       "hello world"]).
  5526. ! text(yellow,64,592,1,0,1,1,0,[
  5527.       "hello world"]).
  5528. ! text(yellow,64,608,2,0,1,1,0,[
  5529.       "hello world"]).
  5530. ! text(yellow,64,624,3,0,1,1,0,[
  5531.       "hello world"]).
  5532. ! text(yellow,64,640,4,0,1,1,0,[
  5533.       "hello world"]).
  5534. ! text(yellow,192,576,0,1,1,1,0,[
  5535.       "hello world"]).
  5536. ! text(yellow,192,592,1,1,1,1,0,[
  5537.       "hello world"]).
  5538. ! text(yellow,192,608,2,1,1,1,0,[
  5539.       "hello world"]).
  5540. ! text(yellow,192,624,3,1,1,1,0,[
  5541.       "hello world"]).
  5542. ! text(yellow,192,640,4,1,1,1,0,[
  5543.       "hello world"]).
  5544. ! text(yellow,320,576,0,2,1,1,0,[
  5545.       "hello world"]).
  5546. ! text(yellow,320,592,1,2,1,1,0,[
  5547.       "hello world"]).
  5548. ! text(yellow,320,608,2,2,1,1,0,[
  5549.       "hello world"]).
  5550. ! text(yellow,320,624,3,2,1,1,0,[
  5551.       "hello world"]).
  5552. ! text(yellow,320,640,4,2,1,1,0,[
  5553.       "hello world"]).
  5554. ! text(yellow,448,576,0,3,1,1,0,[
  5555.       "hello world"]).
  5556. ! text(yellow,448,592,1,3,1,1,0,[
  5557.       "hello world"]).
  5558. ! text(yellow,448,608,2,3,1,1,0,[
  5559.       "hello world"]).
  5560. ! text(yellow,448,624,3,3,1,1,0,[
  5561.       "hello world"]).
  5562. ! text(yellow,448,640,4,3,1,1,0,[
  5563.       "hello world"]).
  5564. ! text(yellow,64,704,0,0,0,1,0,[
  5565.       "hello world"]).
  5566. ! text(yellow,64,720,1,0,0,1,0,[
  5567.       "hello world"]).
  5568. ! text(yellow,64,736,2,0,0,1,0,[
  5569.       "hello world"]).
  5570. ! text(yellow,64,752,3,0,0,1,0,[
  5571.       "hello world"]).
  5572. ! text(yellow,64,768,4,0,0,1,0,[
  5573.       "hello world"]).
  5574. ! text(yellow,192,704,0,1,0,1,0,[
  5575.       "hello world"]).
  5576. ! text(yellow,192,720,1,1,0,1,0,[
  5577.       "hello world"]).
  5578. ! text(yellow,192,736,2,1,0,1,0,[
  5579.       "hello world"]).
  5580. ! text(yellow,192,752,3,1,0,1,0,[
  5581.       "hello world"]).
  5582. ! text(yellow,192,768,4,1,0,1,0,[
  5583.       "hello world"]).
  5584. ! text(yellow,320,704,0,2,0,1,0,[
  5585.       "hello world"]).
  5586. ! text(yellow,320,720,1,2,0,1,0,[
  5587.       "hello world"]).
  5588. ! text(yellow,320,736,2,2,0,1,0,[
  5589.       "hello world"]).
  5590. ! text(yellow,320,752,3,2,0,1,0,[
  5591.       "hello world"]).
  5592. ! text(yellow,320,768,4,2,0,1,0,[
  5593.       "hello world"]).
  5594. ! text(yellow,448,704,0,3,0,1,0,[
  5595.       "hello world"]).
  5596. ! text(yellow,448,720,1,3,0,1,0,[
  5597.       "hello world"]).
  5598. ! text(yellow,448,736,2,3,0,1,0,[
  5599.       "hello world"]).
  5600. ! text(yellow,448,752,3,3,0,1,0,[
  5601.       "hello world"]).
  5602. ! text(yellow,448,768,4,3,0,1,0,[
  5603.       "hello world"]).
  5604. --- 1,241 ----
  5605. ! state(0,7,0,0,0,16,1,0,1,1,1,0,1,2,7,0,0,3,4).
  5606. ! text(yellow,64,64,0,0,4,1,0,0,1,83,19,[
  5607.       "hello world"]).
  5608. ! text(yellow,64,80,1,0,4,1,0,0,1,121,17,[
  5609.       "hello world"]).
  5610. ! text(yellow,64,96,2,0,4,1,0,0,1,90,20,[
  5611.       "hello world"]).
  5612. ! text(yellow,64,112,3,0,4,1,0,0,1,94,20,[
  5613.       "hello world"]).
  5614. ! text(yellow,64,128,4,0,4,1,0,0,1,105,18,[
  5615.       "hello world"]).
  5616. ! text(yellow,256,64,0,1,4,1,0,0,1,89,19,[
  5617.       "hello world"]).
  5618. ! text(yellow,256,80,1,1,4,1,0,0,1,121,18,[
  5619.       "hello world"]).
  5620. ! text(yellow,256,96,2,1,4,1,0,0,1,98,21,[
  5621.       "hello world"]).
  5622. ! text(yellow,256,112,3,1,4,1,0,0,1,107,20,[
  5623.       "hello world"]).
  5624. ! text(yellow,256,128,4,1,4,1,0,0,1,105,18,[
  5625.       "hello world"]).
  5626. ! text(yellow,448,64,0,2,4,1,0,0,1,84,19,[
  5627.       "hello world"]).
  5628. ! text(yellow,448,80,1,2,4,1,0,0,1,121,17,[
  5629.       "hello world"]).
  5630. ! text(yellow,448,96,2,2,4,1,0,0,1,88,21,[
  5631.       "hello world"]).
  5632. ! text(yellow,448,112,3,2,4,1,0,0,1,94,24,[
  5633.       "hello world"]).
  5634. ! text(yellow,448,128,4,2,4,1,0,0,1,105,18,[
  5635.       "hello world"]).
  5636. ! text(yellow,640,64,0,3,4,1,0,0,1,85,19,[
  5637.       "hello world"]).
  5638. ! text(yellow,640,80,1,3,4,1,0,0,1,121,17,[
  5639.       "hello world"]).
  5640. ! text(yellow,640,96,2,3,4,1,0,0,1,93,21,[
  5641.       "hello world"]).
  5642. ! text(yellow,640,112,3,3,4,1,0,0,1,104,24,[
  5643.       "hello world"]).
  5644. ! text(yellow,640,128,4,3,4,1,0,0,1,105,18,[
  5645.       "hello world"]).
  5646. ! text(yellow,64,192,0,0,5,1,0,0,1,109,26,[
  5647.       "hello world"]).
  5648. ! text(yellow,64,208,1,0,5,1,0,0,1,165,22,[
  5649.       "hello world"]).
  5650. ! text(yellow,64,224,2,0,5,1,0,0,1,117,27,[
  5651.       "hello world"]).
  5652. ! text(yellow,64,240,3,0,5,1,0,0,1,125,26,[
  5653.       "hello world"]).
  5654. ! text(yellow,64,256,4,0,5,1,0,0,1,140,24,[
  5655.       "hello world"]).
  5656. ! text(yellow,288,192,0,1,5,1,0,0,1,121,26,[
  5657.       "hello world"]).
  5658. ! text(yellow,288,208,1,1,5,1,0,0,1,165,23,[
  5659.       "hello world"]).
  5660. ! text(yellow,288,224,2,1,5,1,0,0,1,128,27,[
  5661.       "hello world"]).
  5662. ! text(yellow,288,240,3,1,5,1,0,0,1,148,26,[
  5663.       "hello world"]).
  5664. ! text(yellow,288,256,4,1,5,1,0,0,1,140,24,[
  5665.       "hello world"]).
  5666. ! text(yellow,512,192,0,2,5,1,0,0,1,110,25,[
  5667.       "hello world"]).
  5668. ! text(yellow,512,208,1,2,5,1,0,0,1,165,22,[
  5669.       "hello world"]).
  5670. ! text(yellow,512,224,2,2,5,1,0,0,1,117,27,[
  5671.       "hello world"]).
  5672. ! text(yellow,512,240,3,2,5,1,0,0,1,127,26,[
  5673.       "hello world"]).
  5674. ! text(yellow,512,256,4,2,5,1,0,0,1,140,24,[
  5675.       "hello world"]).
  5676. ! text(yellow,736,192,0,3,5,1,0,0,1,113,25,[
  5677.       "hello world"]).
  5678. ! text(yellow,736,208,1,3,5,1,0,0,1,165,28,[
  5679.       "hello world"]).
  5680. ! text(yellow,736,224,2,3,5,1,0,0,1,128,27,[
  5681.       "hello world"]).
  5682. ! text(yellow,736,240,3,3,5,1,0,0,1,140,26,[
  5683.       "hello world"]).
  5684. ! text(yellow,736,256,4,3,5,1,0,0,1,140,24,[
  5685.       "hello world"]).
  5686. ! text(yellow,64,320,0,0,3,1,0,0,1,63,15,[
  5687.       "hello world"]).
  5688. ! text(yellow,64,336,1,0,3,1,0,0,1,99,14,[
  5689.       "hello world"]).
  5690. ! text(yellow,64,352,2,0,3,1,0,0,1,67,16,[
  5691.       "hello world"]).
  5692. ! text(yellow,64,368,3,0,3,1,0,0,1,72,16,[
  5693.       "hello world"]).
  5694. ! text(yellow,64,384,4,0,3,1,0,0,1,84,14,[
  5695.       "hello world"]).
  5696. ! text(yellow,192,320,0,1,3,1,0,0,1,70,15,[
  5697.       "hello world"]).
  5698. ! text(yellow,192,336,1,1,3,1,0,0,1,99,15,[
  5699.       "hello world"]).
  5700. ! text(yellow,192,352,2,1,3,1,0,0,1,76,16,[
  5701.       "hello world"]).
  5702. ! text(yellow,192,368,3,1,3,1,0,0,1,84,16,[
  5703.       "hello world"]).
  5704. ! text(yellow,192,384,4,1,3,1,0,0,1,84,14,[
  5705.       "hello world"]).
  5706. ! text(yellow,320,320,0,2,3,1,0,0,1,64,15,[
  5707.       "hello world"]).
  5708. ! text(yellow,320,336,1,2,3,1,0,0,1,99,14,[
  5709.       "hello world"]).
  5710. ! text(yellow,320,352,2,2,3,1,0,0,1,68,16,[
  5711.       "hello world"]).
  5712. ! text(yellow,320,368,3,2,3,1,0,0,1,71,16,[
  5713.       "hello world"]).
  5714. ! text(yellow,320,384,4,2,3,1,0,0,1,84,14,[
  5715.       "hello world"]).
  5716. ! text(yellow,448,320,0,3,3,1,0,0,1,66,15,[
  5717.       "hello world"]).
  5718. ! text(yellow,448,336,1,3,3,1,0,0,1,99,15,[
  5719.       "hello world"]).
  5720. ! text(yellow,448,352,2,3,3,1,0,0,1,75,16,[
  5721.       "hello world"]).
  5722. ! text(yellow,448,368,3,3,3,1,0,0,1,82,16,[
  5723.       "hello world"]).
  5724. ! text(yellow,448,384,4,3,3,1,0,0,1,84,14,[
  5725.       "hello world"]).
  5726. ! text(yellow,64,448,0,0,2,1,0,0,1,55,14,[
  5727.       "hello world"]).
  5728. ! text(yellow,64,464,1,0,2,1,0,0,1,77,13,[
  5729.       "hello world"]).
  5730. ! text(yellow,64,480,2,0,2,1,0,0,1,61,14,[
  5731.       "hello world"]).
  5732. ! text(yellow,64,496,3,0,2,1,0,0,1,64,14,[
  5733.       "hello world"]).
  5734. ! text(yellow,64,512,4,0,2,1,0,0,1,75,12,[
  5735.       "hello world"]).
  5736. ! text(yellow,192,448,0,1,2,1,0,0,1,59,14,[
  5737.       "hello world"]).
  5738. ! text(yellow,192,464,1,1,2,1,0,0,1,77,13,[
  5739.       "hello world"]).
  5740. ! text(yellow,192,480,2,1,2,1,0,0,1,64,14,[
  5741.       "hello world"]).
  5742. ! text(yellow,192,496,3,1,2,1,0,0,1,77,14,[
  5743.       "hello world"]).
  5744. ! text(yellow,192,512,4,1,2,1,0,0,1,75,12,[
  5745.       "hello world"]).
  5746. ! text(yellow,320,448,0,2,2,1,0,0,1,55,14,[
  5747.       "hello world"]).
  5748. ! text(yellow,320,464,1,2,2,1,0,0,1,77,13,[
  5749.       "hello world"]).
  5750. ! text(yellow,320,480,2,2,2,1,0,0,1,60,14,[
  5751.       "hello world"]).
  5752. ! text(yellow,320,496,3,2,2,1,0,0,1,64,14,[
  5753.       "hello world"]).
  5754. ! text(yellow,320,512,4,2,2,1,0,0,1,75,12,[
  5755.       "hello world"]).
  5756. ! text(yellow,448,448,0,3,2,1,0,0,1,58,14,[
  5757.       "hello world"]).
  5758. ! text(yellow,448,464,1,3,2,1,0,0,1,77,13,[
  5759.       "hello world"]).
  5760. ! text(yellow,448,480,2,3,2,1,0,0,1,63,14,[
  5761.       "hello world"]).
  5762. ! text(yellow,448,496,3,3,2,1,0,0,1,70,14,[
  5763.       "hello world"]).
  5764. ! text(yellow,448,512,4,3,2,1,0,0,1,75,12,[
  5765.       "hello world"]).
  5766. ! text(yellow,64,576,0,0,1,1,0,0,1,50,12,[
  5767.       "hello world"]).
  5768. ! text(yellow,64,592,1,0,1,1,0,0,1,66,10,[
  5769.       "hello world"]).
  5770. ! text(yellow,64,608,2,0,1,1,0,0,1,50,12,[
  5771.       "hello world"]).
  5772. ! text(yellow,64,624,3,0,1,1,0,0,1,54,12,[
  5773.       "hello world"]).
  5774. ! text(yellow,64,640,4,0,1,1,0,0,1,60,10,[
  5775.       "hello world"]).
  5776. ! text(yellow,192,576,0,1,1,1,0,0,1,49,12,[
  5777.       "hello world"]).
  5778. ! text(yellow,192,592,1,1,1,1,0,0,1,66,10,[
  5779.       "hello world"]).
  5780. ! text(yellow,192,608,2,1,1,1,0,0,1,54,12,[
  5781.       "hello world"]).
  5782. ! text(yellow,192,624,3,1,1,1,0,0,1,66,12,[
  5783.       "hello world"]).
  5784. ! text(yellow,192,640,4,1,1,1,0,0,1,60,10,[
  5785.       "hello world"]).
  5786. ! text(yellow,320,576,0,2,1,1,0,0,1,47,12,[
  5787.       "hello world"]).
  5788. ! text(yellow,320,592,1,2,1,1,0,0,1,66,10,[
  5789.       "hello world"]).
  5790. ! text(yellow,320,608,2,2,1,1,0,0,1,49,12,[
  5791.       "hello world"]).
  5792. ! text(yellow,320,624,3,2,1,1,0,0,1,54,12,[
  5793.       "hello world"]).
  5794. ! text(yellow,320,640,4,2,1,1,0,0,1,60,10,[
  5795.       "hello world"]).
  5796. ! text(yellow,448,576,0,3,1,1,0,0,1,47,12,[
  5797.       "hello world"]).
  5798. ! text(yellow,448,592,1,3,1,1,0,0,1,66,10,[
  5799.       "hello world"]).
  5800. ! text(yellow,448,608,2,3,1,1,0,0,1,54,12,[
  5801.       "hello world"]).
  5802. ! text(yellow,448,624,3,3,1,1,0,0,1,61,12,[
  5803.       "hello world"]).
  5804. ! text(yellow,448,640,4,3,1,1,0,0,1,60,10,[
  5805.       "hello world"]).
  5806. ! text(yellow,64,704,0,0,0,1,0,0,1,40,9,[
  5807.       "hello world"]).
  5808. ! text(yellow,64,720,1,0,0,1,0,0,1,55,9,[
  5809.       "hello world"]).
  5810. ! text(yellow,64,736,2,0,0,1,0,0,1,41,10,[
  5811.       "hello world"]).
  5812. ! text(yellow,64,752,3,0,0,1,0,0,1,43,9,[
  5813.       "hello world"]).
  5814. ! text(yellow,64,768,4,0,0,1,0,0,1,48,11,[
  5815.       "hello world"]).
  5816. ! text(yellow,192,704,0,1,0,1,0,0,1,39,9,[
  5817.       "hello world"]).
  5818. ! text(yellow,192,720,1,1,0,1,0,0,1,55,10,[
  5819.       "hello world"]).
  5820. ! text(yellow,192,736,2,1,0,1,0,0,1,42,10,[
  5821.       "hello world"]).
  5822. ! text(yellow,192,752,3,1,0,1,0,0,1,55,9,[
  5823.       "hello world"]).
  5824. ! text(yellow,192,768,4,1,0,1,0,0,1,48,11,[
  5825.       "hello world"]).
  5826. ! text(yellow,320,704,0,2,0,1,0,0,1,38,9,[
  5827.       "hello world"]).
  5828. ! text(yellow,320,720,1,2,0,1,0,0,1,55,10,[
  5829.       "hello world"]).
  5830. ! text(yellow,320,736,2,2,0,1,0,0,1,40,10,[
  5831.       "hello world"]).
  5832. ! text(yellow,320,752,3,2,0,1,0,0,1,43,9,[
  5833.       "hello world"]).
  5834. ! text(yellow,320,768,4,2,0,1,0,0,1,48,11,[
  5835.       "hello world"]).
  5836. ! text(yellow,448,704,0,3,0,1,0,0,1,37,9,[
  5837.       "hello world"]).
  5838. ! text(yellow,448,720,1,3,0,1,0,0,1,55,10,[
  5839.       "hello world"]).
  5840. ! text(yellow,448,736,2,3,0,1,0,0,1,42,10,[
  5841.       "hello world"]).
  5842. ! text(yellow,448,752,3,3,0,1,0,0,1,50,9,[
  5843.       "hello world"]).
  5844. ! text(yellow,448,768,4,3,0,1,0,0,1,48,11,[
  5845.       "hello world"]).
  5846. *** slide-demo.obj.orig    Wed Jun 27 09:16:33 1990
  5847. --- slide-demo.obj    Mon Jul 30 17:57:38 1990
  5848. ***************
  5849. *** 1,7 ****
  5850. ! state(4,6,0,0,0,16,1,0,1,2,0,0,1,2,1,1,1,0,4).
  5851.   polygon(magenta,5,[144,32,144,152,336,152,336,32,144,32],1,4,10,1).
  5852. ! text(magenta,240,48,0,0,5,1,1,0,2,[
  5853.       "A Slide"]).
  5854. ! text(magenta,240,112,3,2,5,1,1,0,2,[
  5855.       "Tgif"]).
  5856.   group([
  5857. --- 1,7 ----
  5858. ! state(4,7,0,0,0,16,1,0,1,2,0,0,1,2,1,1,1,0,4).
  5859.   polygon(magenta,5,[144,32,144,152,336,152,336,32,144,32],1,4,10,1).
  5860. ! text(magenta,240,48,0,0,5,1,1,0,2,71,26,[
  5861.       "A Slide"]).
  5862. ! text(magenta,240,112,3,2,5,1,1,0,2,43,26,[
  5863.       "Tgif"]).
  5864.   group([
  5865. ***************
  5866. *** 10,18 ****
  5867.   ],[
  5868.   ]).
  5869. ! text(magenta,64,183,0,1,4,1,0,0,1,[
  5870.       "Dot is at 0.5 inch from the left."]).
  5871. ! text(magenta,64,246,2,0,4,1,0,0,1,[
  5872.       "Text is at 1 inch from the left."]).
  5873. ! text(magenta,96,308,3,3,4,1,0,0,1,[
  5874.       "This text is at 1.5 inch from the left."]).
  5875.   group([
  5876. --- 10,18 ----
  5877.   ],[
  5878.   ]).
  5879. ! text(magenta,64,183,0,1,4,1,0,0,1,241,19,[
  5880.       "Dot is at 0.5 inch from the left."]).
  5881. ! text(magenta,64,246,2,0,4,1,0,0,1,239,20,[
  5882.       "Text is at 1 inch from the left."]).
  5883. ! text(magenta,96,308,3,3,4,1,0,0,1,322,24,[
  5884.       "This text is at 1.5 inch from the left."]).
  5885.   group([
  5886. ***************
  5887. *** 21,49 ****
  5888.   ],[
  5889.   ]).
  5890. ! text(magenta,128,464,0,0,3,1,1,0,1,[
  5891.       "2in"]).
  5892. ! text(magenta,256,464,0,0,3,1,1,0,1,[
  5893.       "4in"]).
  5894. ! text(magenta,384,464,0,0,3,1,1,0,1,[
  5895.       "6in"]).
  5896. ! text(magenta,448,512,0,0,3,1,1,0,1,[
  5897.       "7in"]).
  5898. ! text(magenta,320,512,0,0,3,1,1,0,1,[
  5899.       "5in"]).
  5900. ! text(magenta,192,512,0,0,3,1,1,0,1,[
  5901.       "3in"]).
  5902. ! text(magenta,64,512,0,0,3,1,1,0,1,[
  5903.       "1in"]).
  5904. ! text(magenta,384,144,1,0,0,1,1,0,1,[
  5905.       "8pt"]).
  5906. ! text(magenta,384,160,1,0,1,1,1,0,1,[
  5907.       "10pt"]).
  5908. ! text(magenta,384,176,1,0,2,1,1,0,1,[
  5909.       "12pt"]).
  5910. ! text(magenta,384,192,1,0,3,1,1,0,1,[
  5911.       "14pt"]).
  5912. ! text(magenta,384,208,1,0,4,1,1,0,1,[
  5913.       "18pt"]).
  5914. ! text(magenta,384,224,1,0,5,1,1,0,1,[
  5915.       "24pt"]).
  5916.   poly(magenta,2,[384,336,384,456],2,0,1,8,0,0,[
  5917. --- 21,49 ----
  5918.   ],[
  5919.   ]).
  5920. ! text(magenta,128,464,0,0,3,1,1,0,1,17,15,[
  5921.       "2in"]).
  5922. ! text(magenta,256,464,0,0,3,1,1,0,1,17,15,[
  5923.       "4in"]).
  5924. ! text(magenta,384,464,0,0,3,1,1,0,1,17,15,[
  5925.       "6in"]).
  5926. ! text(magenta,448,512,0,0,3,1,1,0,1,17,15,[
  5927.       "7in"]).
  5928. ! text(magenta,320,512,0,0,3,1,1,0,1,17,15,[
  5929.       "5in"]).
  5930. ! text(magenta,192,512,0,0,3,1,1,0,1,17,15,[
  5931.       "3in"]).
  5932. ! text(magenta,64,512,0,0,3,1,1,0,1,17,15,[
  5933.       "1in"]).
  5934. ! text(magenta,384,144,1,0,0,1,1,0,1,15,9,[
  5935.       "8pt"]).
  5936. ! text(magenta,384,160,1,0,1,1,1,0,1,24,10,[
  5937.       "10pt"]).
  5938. ! text(magenta,384,176,1,0,2,1,1,0,1,28,13,[
  5939.       "12pt"]).
  5940. ! text(magenta,384,192,1,0,3,1,1,0,1,36,14,[
  5941.       "14pt"]).
  5942. ! text(magenta,384,208,1,0,4,1,1,0,1,44,17,[
  5943.       "18pt"]).
  5944. ! text(magenta,384,224,1,0,5,1,1,0,1,60,22,[
  5945.       "24pt"]).
  5946.   poly(magenta,2,[384,336,384,456],2,0,1,8,0,0,[
  5947. ***************
  5948. *** 61,64 ****
  5949.   poly(magenta,2,[64,336,64,504],2,0,1,13,0,0,[
  5950.   ]).
  5951. ! text(magenta,240,80,2,0,5,1,1,0,7,[
  5952.       "Presented by"]).
  5953. --- 61,64 ----
  5954.   poly(magenta,2,[64,336,64,504],2,0,1,13,0,0,[
  5955.   ]).
  5956. ! text(magenta,240,80,2,0,5,1,1,0,7,145,27,[
  5957.       "Presented by"]).
  5958. *** tgificon.obj.orig    Wed Jun 27 09:14:47 1990
  5959. --- tgificon.obj    Mon Jul 30 17:57:40 1990
  5960. ***************
  5961. *** 1,3 ****
  5962. ! state(0,6,0,0,0,16,1,4,0,3,0,0,1,2,1,0,3,0,5).
  5963.   group([
  5964.   group([
  5965. --- 1,3 ----
  5966. ! state(0,7,0,0,0,16,1,4,0,3,0,0,1,2,1,0,3,0,5).
  5967.   group([
  5968.   group([
  5969. ***************
  5970. *** 11,21 ****
  5971.   ],[
  5972.   ]),
  5973. ! text(yellow,40,6,0,3,3,1,1,0,1,[
  5974.       "T"]),
  5975. ! text(yellow,30,24,1,1,3,1,1,0,1,[
  5976.       "G"]),
  5977. ! text(yellow,50,43,3,3,3,1,1,0,1,[
  5978.       "I"]),
  5979. ! text(yellow,30,52,2,3,3,1,1,0,1,[
  5980.       "F"])
  5981.   ],[
  5982. --- 11,21 ----
  5983.   ],[
  5984.   ]),
  5985. ! text(yellow,40,6,0,3,3,1,1,0,1,10,15,[
  5986.       "T"]),
  5987. ! text(yellow,30,24,1,1,3,1,1,0,1,9,15,[
  5988.       "G"]),
  5989. ! text(yellow,50,43,3,3,3,1,1,0,1,6,16,[
  5990.       "I"]),
  5991. ! text(yellow,30,52,2,3,3,1,1,0,1,8,16,[
  5992.       "F"])
  5993.   ],[
  5994. *** flip-flop.sym.orig    Wed Jun 27 09:16:34 1990
  5995. --- flip-flop.sym    Mon Jul 30 17:58:02 1990
  5996. ***************
  5997. *** 1,16 ****
  5998. ! state(0,6,0,0,0,8,1,8,0,2,0,1,0,0,1,0,0,0,4).
  5999. ! text(white,496,184,0,0,4,1,0,0,1,[
  6000.       "definition part of the NAND gate."]).
  6001. ! text(white,448,160,0,0,4,1,0,0,1,[
  6002.       "Select a NAND gate and type ^V to see the"]).
  6003. ! text(white,496,136,0,0,4,1,0,0,1,[
  6004.       "building-block object."]).
  6005. ! text(white,448,112,0,0,4,1,0,0,1,[
  6006.       "The rest of this file is the definition part of the"]).
  6007. ! text(white,496,88,0,0,4,1,0,0,1,[
  6008.       "is highlighted with a dashed outline."]).
  6009. ! text(white,448,64,0,0,4,1,0,0,1,[
  6010.       "The representation part of the flip-flop"]).
  6011. ! text(white,448,40,0,0,4,1,0,0,1,[
  6012.       "The SR flip-flop is a building-block object."]).
  6013.   icon([
  6014. --- 1,16 ----
  6015. ! state(0,7,0,0,0,8,1,8,0,2,0,1,0,0,1,0,0,0,4).
  6016. ! text(white,496,184,0,0,4,1,0,0,1,252,19,[
  6017.       "definition part of the NAND gate."]).
  6018. ! text(white,448,160,0,0,4,1,0,0,1,317,19,[
  6019.       "Select a NAND gate and type ^V to see the"]).
  6020. ! text(white,496,136,0,0,4,1,0,0,1,164,19,[
  6021.       "building-block object."]).
  6022. ! text(white,448,112,0,0,4,1,0,0,1,341,19,[
  6023.       "The rest of this file is the definition part of the"]).
  6024. ! text(white,496,88,0,0,4,1,0,0,1,264,19,[
  6025.       "is highlighted with a dashed outline."]).
  6026. ! text(white,448,64,0,0,4,1,0,0,1,293,19,[
  6027.       "The representation part of the flip-flop"]).
  6028. ! text(white,448,40,0,0,4,1,0,0,1,321,19,[
  6029.       "The SR flip-flop is a building-block object."]).
  6030.   icon([
  6031. ***************
  6032. *** 40,47 ****
  6033.   "pin",17,[
  6034.   attr("name=", "out", 0, 1, 1,
  6035. ! text(green,312,272,1,0,4,1,1,0,1,[
  6036.       "name=out"])),
  6037.   attr("num=", "3", 1, 0, 1,
  6038. ! text(green,296,280,1,0,4,1,1,0,1,[
  6039.       "3"]))
  6040.   ]),
  6041. --- 40,47 ----
  6042.   "pin",17,[
  6043.   attr("name=", "out", 0, 1, 1,
  6044. ! text(green,312,272,1,0,4,1,1,0,1,88,17,[
  6045.       "name=out"])),
  6046.   attr("num=", "3", 1, 0, 1,
  6047. ! text(green,296,280,1,0,4,1,1,0,1,11,17,[
  6048.       "3"]))
  6049.   ]),
  6050. ***************
  6051. *** 52,59 ****
  6052.   "pin",18,[
  6053.   attr("num=", "1", 1, 0, 1,
  6054. ! text(green,184,256,1,0,4,1,1,0,1,[
  6055.       "1"])),
  6056.   attr("name=", "in1", 0, 1, 1,
  6057. ! text(green,168,248,1,0,4,1,1,0,1,[
  6058.       "name=in1"]))
  6059.   ]),
  6060. --- 52,59 ----
  6061.   "pin",18,[
  6062.   attr("num=", "1", 1, 0, 1,
  6063. ! text(green,184,256,1,0,4,1,1,0,1,11,17,[
  6064.       "1"])),
  6065.   attr("name=", "in1", 0, 1, 1,
  6066. ! text(green,168,248,1,0,4,1,1,0,1,88,17,[
  6067.       "name=in1"]))
  6068.   ]),
  6069. ***************
  6070. *** 64,71 ****
  6071.   "pin",19,[
  6072.   attr("name=", "in2", 0, 1, 1,
  6073. ! text(green,168,296,1,0,4,1,1,0,1,[
  6074.       "name=in2"])),
  6075.   attr("num=", "2", 1, 0, 1,
  6076. ! text(green,184,304,1,0,4,1,1,0,1,[
  6077.       "2"]))
  6078.   ])
  6079. --- 64,71 ----
  6080.   "pin",19,[
  6081.   attr("name=", "in2", 0, 1, 1,
  6082. ! text(green,168,296,1,0,4,1,1,0,1,88,17,[
  6083.       "name=in2"])),
  6084.   attr("num=", "2", 1, 0, 1,
  6085. ! text(green,184,304,1,0,4,1,1,0,1,11,17,[
  6086.       "2"]))
  6087.   ])
  6088. ***************
  6089. *** 73,77 ****
  6090.   "nand2",26,[
  6091.   attr("LOC=", "", 1, 1, 1,
  6092. ! text(red,228,285,1,0,5,1,1,0,1,[
  6093.       "LOC="]))
  6094.   ]).
  6095. --- 73,77 ----
  6096.   "nand2",26,[
  6097.   attr("LOC=", "", 1, 1, 1,
  6098. ! text(red,228,285,1,0,5,1,1,0,1,60,22,[
  6099.       "LOC="]))
  6100.   ]).
  6101. ***************
  6102. *** 102,109 ****
  6103.   "pin",33,[
  6104.   attr("num=", "3", 1, 0, 1,
  6105. ! text(green,296,400,1,0,4,1,1,0,1,[
  6106.       "3"])),
  6107.   attr("name=", "out", 0, 1, 1,
  6108. ! text(green,312,392,1,0,4,1,1,0,1,[
  6109.       "name=out"]))
  6110.   ]),
  6111. --- 102,109 ----
  6112.   "pin",33,[
  6113.   attr("num=", "3", 1, 0, 1,
  6114. ! text(green,296,400,1,0,4,1,1,0,1,11,17,[
  6115.       "3"])),
  6116.   attr("name=", "out", 0, 1, 1,
  6117. ! text(green,312,392,1,0,4,1,1,0,1,88,17,[
  6118.       "name=out"]))
  6119.   ]),
  6120. ***************
  6121. *** 114,121 ****
  6122.   "pin",34,[
  6123.   attr("name=", "in1", 0, 1, 1,
  6124. ! text(green,168,368,1,0,4,1,1,0,1,[
  6125.       "name=in1"])),
  6126.   attr("num=", "1", 1, 0, 1,
  6127. ! text(green,184,376,1,0,4,1,1,0,1,[
  6128.       "1"]))
  6129.   ]),
  6130. --- 114,121 ----
  6131.   "pin",34,[
  6132.   attr("name=", "in1", 0, 1, 1,
  6133. ! text(green,168,368,1,0,4,1,1,0,1,88,17,[
  6134.       "name=in1"])),
  6135.   attr("num=", "1", 1, 0, 1,
  6136. ! text(green,184,376,1,0,4,1,1,0,1,11,17,[
  6137.       "1"]))
  6138.   ]),
  6139. ***************
  6140. *** 126,133 ****
  6141.   "pin",35,[
  6142.   attr("num=", "2", 1, 0, 1,
  6143. ! text(green,184,424,1,0,4,1,1,0,1,[
  6144.       "2"])),
  6145.   attr("name=", "in2", 0, 1, 1,
  6146. ! text(green,168,416,1,0,4,1,1,0,1,[
  6147.       "name=in2"]))
  6148.   ])
  6149. --- 126,133 ----
  6150.   "pin",35,[
  6151.   attr("num=", "2", 1, 0, 1,
  6152. ! text(green,184,424,1,0,4,1,1,0,1,11,17,[
  6153.       "2"])),
  6154.   attr("name=", "in2", 0, 1, 1,
  6155. ! text(green,168,416,1,0,4,1,1,0,1,88,17,[
  6156.       "name=in2"]))
  6157.   ])
  6158. ***************
  6159. *** 135,139 ****
  6160.   "nand2",36,[
  6161.   attr("LOC=", "", 1, 1, 1,
  6162. ! text(red,228,405,1,0,5,1,1,0,1,[
  6163.       "LOC="]))
  6164.   ]).
  6165. --- 135,139 ----
  6166.   "nand2",36,[
  6167.   attr("LOC=", "", 1, 1, 1,
  6168. ! text(red,228,405,1,0,5,1,1,0,1,60,22,[
  6169.       "LOC="]))
  6170.   ]).
  6171. ***************
  6172. *** 161,168 ****
  6173.   "pin",43,[
  6174.   attr("name=", "Q", 1, 0, 1,
  6175. ! text(green,264,96,1,0,4,1,1,0,1,[
  6176.       "Q"])),
  6177.   attr("num=", "", 0, 1, 1,
  6178. ! text(green,296,64,1,0,4,1,1,0,1,[
  6179.       "num="]))
  6180.   ]),
  6181. --- 161,168 ----
  6182.   "pin",43,[
  6183.   attr("name=", "Q", 1, 0, 1,
  6184. ! text(green,264,96,1,0,4,1,1,0,1,11,17,[
  6185.       "Q"])),
  6186.   attr("num=", "", 0, 1, 1,
  6187. ! text(green,296,64,1,0,4,1,1,0,1,44,17,[
  6188.       "num="]))
  6189.   ]),
  6190. ***************
  6191. *** 173,180 ****
  6192.   "pin",44,[
  6193.   attr("num=", "", 0, 1, 1,
  6194. ! text(green,296,112,1,0,4,1,1,0,1,[
  6195.       "num="])),
  6196.   attr("name=", "Q'", 1, 0, 1,
  6197. ! text(green,256,144,1,0,4,1,1,0,1,[
  6198.       "Q'"]))
  6199.   ]),
  6200. --- 173,180 ----
  6201.   "pin",44,[
  6202.   attr("num=", "", 0, 1, 1,
  6203. ! text(green,296,112,1,0,4,1,1,0,1,44,17,[
  6204.       "num="])),
  6205.   attr("name=", "Q'", 1, 0, 1,
  6206. ! text(green,256,144,1,0,4,1,1,0,1,22,17,[
  6207.       "Q'"]))
  6208.   ]),
  6209. ***************
  6210. *** 185,192 ****
  6211.   "pin",45,[
  6212.   attr("num=", "", 0, 1, 1,
  6213. ! text(green,184,64,1,0,4,1,1,0,1,[
  6214.       "num="])),
  6215.   attr("name=", "S'", 1, 0, 1,
  6216. ! text(green,224,96,1,0,4,1,1,0,1,[
  6217.       "S'"]))
  6218.   ]),
  6219. --- 185,192 ----
  6220.   "pin",45,[
  6221.   attr("num=", "", 0, 1, 1,
  6222. ! text(green,184,64,1,0,4,1,1,0,1,44,17,[
  6223.       "num="])),
  6224.   attr("name=", "S'", 1, 0, 1,
  6225. ! text(green,224,96,1,0,4,1,1,0,1,22,17,[
  6226.       "S'"]))
  6227.   ]),
  6228. ***************
  6229. *** 197,204 ****
  6230.   "pin",46,[
  6231.   attr("name=", "R'", 1, 0, 1,
  6232. ! text(green,224,144,1,0,4,1,1,0,1,[
  6233.       "R'"])),
  6234.   attr("num=", "", 0, 1, 1,
  6235. ! text(green,184,112,1,0,4,1,1,0,1,[
  6236.       "num="]))
  6237.   ])
  6238. --- 197,204 ----
  6239.   "pin",46,[
  6240.   attr("name=", "R'", 1, 0, 1,
  6241. ! text(green,224,144,1,0,4,1,1,0,1,22,17,[
  6242.       "R'"])),
  6243.   attr("num=", "", 0, 1, 1,
  6244. ! text(green,184,112,1,0,4,1,1,0,1,44,17,[
  6245.       "num="]))
  6246.   ])
  6247. *** nand2.sym.orig    Wed Jun 27 09:16:36 1990
  6248. --- nand2.sym    Mon Jul 30 17:58:05 1990
  6249. ***************
  6250. *** 1,24 ****
  6251. ! state(0,6,0,0,0,8,1,8,0,2,0,1,0,0,1,0,0,0,4).
  6252. ! text(white,320,264,0,0,4,1,0,0,1,[
  6253.       "Select a pin icon and type #M to look at the pin attributes."]).
  6254. ! text(white,320,240,0,0,4,1,0,0,1,[
  6255.       "You can actually push into the little squares which are pins."]).
  6256. ! text(white,320,216,0,0,4,1,0,0,1,[
  6257.       "Ungroup the little pieces and see what is it made of."]).
  6258. ! text(white,384,192,0,0,4,1,0,0,1,[
  6259.       "box go away."]).
  6260. ! text(white,320,168,0,0,4,1,0,0,1,[
  6261.       "Select the UnMakeSymbolic item and see the dashed"]).
  6262. ! text(white,384,144,0,0,4,1,0,0,1,[
  6263.       "named ``special''."]).
  6264. ! text(white,384,120,0,0,4,1,0,0,1,[
  6265.       "the right mouse button, then select the last entry"]).
  6266. ! text(white,320,96,0,0,4,1,0,0,1,[
  6267.       "Select one of the NAND gates, pop up the main menu using"]).
  6268. ! text(white,320,72,0,0,4,1,0,0,1,[
  6269.       "Make a copy of the NAND gate."]).
  6270. ! text(white,320,48,0,0,4,1,0,0,1,[
  6271.       "It is therefore a ``primitive'' building-block object."]).
  6272. ! text(white,320,24,0,0,4,1,0,0,1,[
  6273.       "The NAND gate has no implementation part."]).
  6274.   sym([
  6275. --- 1,24 ----
  6276. ! state(0,7,0,0,0,8,1,8,0,2,0,1,0,0,1,0,0,0,4).
  6277. ! text(white,320,264,0,0,4,1,0,0,1,428,19,[
  6278.       "Select a pin icon and type #M to look at the pin attributes."]).
  6279. ! text(white,320,240,0,0,4,1,0,0,1,436,19,[
  6280.       "You can actually push into the little squares which are pins."]).
  6281. ! text(white,320,216,0,0,4,1,0,0,1,377,19,[
  6282.       "Ungroup the little pieces and see what is it made of."]).
  6283. ! text(white,384,192,0,0,4,1,0,0,1,94,19,[
  6284.       "box go away."]).
  6285. ! text(white,320,168,0,0,4,1,0,0,1,390,19,[
  6286.       "Select the UnMakeSymbolic item and see the dashed"]).
  6287. ! text(white,384,144,0,0,4,1,0,0,1,129,19,[
  6288.       "named ``special''."]).
  6289. ! text(white,384,120,0,0,4,1,0,0,1,356,19,[
  6290.       "the right mouse button, then select the last entry"]).
  6291. ! text(white,320,96,0,0,4,1,0,0,1,438,19,[
  6292.       "Select one of the NAND gates, pop up the main menu using"]).
  6293. ! text(white,320,72,0,0,4,1,0,0,1,237,19,[
  6294.       "Make a copy of the NAND gate."]).
  6295. ! text(white,320,48,0,0,4,1,0,0,1,374,19,[
  6296.       "It is therefore a ``primitive'' building-block object."]).
  6297. ! text(white,320,24,0,0,4,1,0,0,1,338,19,[
  6298.       "The NAND gate has no implementation part."]).
  6299.   sym([
  6300. ***************
  6301. *** 48,55 ****
  6302.   "pin",17,[
  6303.   attr("name=", "out", 0, 1, 1,
  6304. ! text(green,256,104,1,0,4,1,1,0,1,[
  6305.       "name=out"])),
  6306.   attr("num=", "3", 1, 0, 1,
  6307. ! text(green,240,112,1,0,4,1,1,0,1,[
  6308.       "3"]))
  6309.   ]),
  6310. --- 48,55 ----
  6311.   "pin",17,[
  6312.   attr("name=", "out", 0, 1, 1,
  6313. ! text(green,256,104,1,0,4,1,1,0,1,88,17,[
  6314.       "name=out"])),
  6315.   attr("num=", "3", 1, 0, 1,
  6316. ! text(green,240,112,1,0,4,1,1,0,1,11,17,[
  6317.       "3"]))
  6318.   ]),
  6319. ***************
  6320. *** 60,67 ****
  6321.   "pin",18,[
  6322.   attr("num=", "1", 1, 0, 1,
  6323. ! text(green,128,88,1,0,4,1,1,0,1,[
  6324.       "1"])),
  6325.   attr("name=", "in1", 0, 1, 1,
  6326. ! text(green,112,80,1,0,4,1,1,0,1,[
  6327.       "name=in1"]))
  6328.   ]),
  6329. --- 60,67 ----
  6330.   "pin",18,[
  6331.   attr("num=", "1", 1, 0, 1,
  6332. ! text(green,128,88,1,0,4,1,1,0,1,11,17,[
  6333.       "1"])),
  6334.   attr("name=", "in1", 0, 1, 1,
  6335. ! text(green,112,80,1,0,4,1,1,0,1,88,17,[
  6336.       "name=in1"]))
  6337.   ]),
  6338. ***************
  6339. *** 72,79 ****
  6340.   "pin",19,[
  6341.   attr("name=", "in2", 0, 1, 1,
  6342. ! text(green,112,128,1,0,4,1,1,0,1,[
  6343.       "name=in2"])),
  6344.   attr("num=", "2", 1, 0, 1,
  6345. ! text(green,128,136,1,0,4,1,1,0,1,[
  6346.       "2"]))
  6347.   ])
  6348. --- 72,79 ----
  6349.   "pin",19,[
  6350.   attr("name=", "in2", 0, 1, 1,
  6351. ! text(green,112,128,1,0,4,1,1,0,1,88,17,[
  6352.       "name=in2"])),
  6353.   attr("num=", "2", 1, 0, 1,
  6354. ! text(green,128,136,1,0,4,1,1,0,1,11,17,[
  6355.       "2"]))
  6356.   ])
  6357. ***************
  6358. *** 80,84 ****
  6359.   ],[
  6360.   attr("LOC=", "", 1, 1, 0,
  6361. ! text(red,172,117,1,0,5,1,1,0,1,[
  6362.       "LOC="]))
  6363.   ]).
  6364. --- 80,84 ----
  6365.   ],[
  6366.   attr("LOC=", "", 1, 1, 0,
  6367. ! text(red,172,117,1,0,5,1,1,0,1,60,22,[
  6368.       "LOC="]))
  6369.   ]).
  6370. *** pin.sym.orig    Wed Jun 27 09:16:36 1990
  6371. --- pin.sym    Mon Jul 30 17:58:08 1990
  6372. ***************
  6373. *** 1,3 ****
  6374. ! state(0,6,0,0,0,16,1,4,2,2,0,0,0,0,1,1,1,0,5).
  6375.   sym([
  6376.   box(yellow,96,96,128,128,0,0,0),
  6377. --- 1,3 ----
  6378. ! state(0,7,0,0,0,16,1,4,2,2,0,0,0,0,1,1,1,0,5).
  6379.   sym([
  6380.   box(yellow,96,96,128,128,0,0,0),
  6381. ***************
  6382. *** 5,12 ****
  6383.   ],[
  6384.   attr("name=", "", 1, 1, 0,
  6385. ! text(green,112,88,1,0,4,1,1,0,1,[
  6386.       "name="])),
  6387.   attr("num=", "", 1, 1, 0,
  6388. ! text(green,112,72,1,0,4,1,1,0,1,[
  6389.       "num="]))
  6390.   ]).
  6391. --- 5,12 ----
  6392.   ],[
  6393.   attr("name=", "", 1, 1, 0,
  6394. ! text(green,112,88,1,0,4,1,1,0,1,55,17,[
  6395.       "name="])),
  6396.   attr("num=", "", 1, 1, 0,
  6397. ! text(green,112,72,1,0,4,1,1,0,1,44,17,[
  6398.       "num="]))
  6399.   ]).
  6400. *** tangram.sym.orig    Wed Jun 27 09:16:38 1990
  6401. --- tangram.sym    Mon Jul 30 17:58:11 1990
  6402. ***************
  6403. *** 1,18 ****
  6404. ! state(0,2,0,0,0,16,1,4,1,1,0,1,2,1,0,0,0,7).
  6405.   sym([
  6406. ! polygon(yellow,5,[128,96,96,128,128,160,160,128,128,96],0,0,1),
  6407. ! poly(yellow,2,[96,128,160,128],0,0,1,0,[
  6408.   ]),
  6409. ! poly(yellow,2,[112,112,144,112],0,0,1,1,[
  6410.   ]),
  6411. ! poly(yellow,2,[128,112,128,160],0,0,1,2,[
  6412.   ]),
  6413. ! poly(yellow,2,[112,112,112,128],0,0,1,3,[
  6414.   ]),
  6415. ! poly(yellow,2,[128,112,144,128],0,0,1,4,[
  6416.   ])
  6417.   ],[
  6418.   attr("name=", "Tangram", 1, 0, 0,
  6419. ! text(yellow,128,160,3,2,3,1,1,[
  6420.       "Tangram"]))
  6421.   ]).
  6422. --- 1,18 ----
  6423. ! state(0,7,0,0,0,16,1,4,1,1,0,0,1,2,1,0,0,0,7).
  6424.   sym([
  6425. ! polygon(yellow,5,[128,96,96,128,128,160,160,128,128,96],0,0,1,0),
  6426. ! poly(yellow,2,[96,128,160,128],0,0,1,0,0,0,[
  6427.   ]),
  6428. ! poly(yellow,2,[112,112,144,112],0,0,1,1,0,0,[
  6429.   ]),
  6430. ! poly(yellow,2,[128,112,128,160],0,0,1,2,0,0,[
  6431.   ]),
  6432. ! poly(yellow,2,[112,112,112,128],0,0,1,3,0,0,[
  6433.   ]),
  6434. ! poly(yellow,2,[128,112,144,128],0,0,1,4,0,0,[
  6435.   ])
  6436.   ],[
  6437.   attr("name=", "Tangram", 1, 0, 0,
  6438. ! text(yellow,128,160,3,2,3,1,1,0,1,65,16,[
  6439.       "Tangram"]))
  6440.   ]).
  6441. ---------------------------------> cut here <---------------------------------
  6442. -- 
  6443. Bill Cheng // UCLA Computer Science Department // (213) 206-7135
  6444. 3277 Boelter Hall // Los Angeles, California 90024 // USA
  6445. william@CS.UCLA.EDU      ...!{uunet|ucbvax}!cs.ucla.edu!william
  6446.  
  6447. --
  6448. Dan Heller
  6449. ------------------------------------------------
  6450. O'Reilly && Associates               Zyrcom Inc
  6451. Senior Writer                   President
  6452. argv@ora.com            argv@zipcode.com
  6453.